2016-06-07 13 views
0

brauche ich so etwas wieSet env Variable von BASH Skript

$ source /etc/environments # called in bash.sh script 

Natürlich machen nach Skript keine Änderungen vorgenommen haben anwenden zu schälen. Ich weiß, dass dies schwierig ist, weil der Child-Prozess den Eltern-Bash-Prozess nicht modifizieren kann. Aber könnte das ein anderer Weg sein?

Antwort

1

Wie Sie selbst festgestellt haben, kann ein Child-Prozess keine persistenten Umgebungsvariablen setzen. Einer der üblichen Arbeit um so etwas zu stdout schreiben:

% cat my_script 
#!/bin/bash 
echo "export MY_VAR=1234" 

und dann in einem Kommandosubstitution verwendet:

eval "$(./my_script)" 

Ein Beispiel für ein solches Skript ist dircolors

+0

oder einfach Quelle ... – 123

+0

@ 123 Es wird mit Bash-Skripten arbeiten, aber sonst nichts. – andlrc

+0

Frage ist markiert bash ... Auch '$()' ist Bash nur ... – 123

1

Sie verwenden sollten,

source bash.sh 

Dann läuft es in der ursprünglichen Shell statt einer Kindprozess.