Thread Pseudo Terminal erstellen
(11 answers)
Opened by rhineshell at 2012-07-23 22:21
Umgebungsvariablen werden an die Kindprozesse weiter gegeben. Wenn du in Perl "%ENV" richtig setzt, bekommen die Kindprozesse diese mit.
Du hast zwei Möglichkeiten das zu erreichen. Du kannst die exports aus der Datei lesen: (Ohne es getestet zu haben) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 my $shell_exports='exports.sh'; make_exports($shell_exports); open3(...); sub make_exports { my $file=shift; open(my $fh, '<', $file) or return 0; while(my $line=<$fh>) { $ENV{$1}=$2 if($line=~/^\s*export\s+(?:.+?\s+)?(\w+)=(.*?)\s*$/); } close($fh); return 1; } Oder du führst das Script aus und ließt danach die exportierten Variablen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 my $shell_exports='./exports.sh'; make_exports($shell_exports); open3(...); sub make_exports { my $file=shift; for my $line (`sh -c '. $file && env'`) { chomp($line); my ($k,$v)=split(/=/,$line,2); $ENV{$k}=$v if($k && $v); } return 1; } |