Thread Pseudo Terminal erstellen (11 answers)
Opened by rhineshell at 2012-07-23 22:21

topeg
 2012-07-30 11:42
#160300 #160300
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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;
}

View full thread Pseudo Terminal erstellen