PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kann ich mit Hilfe von Shellscripten Umgebungsvariaben ändern?



pagex
08-09-2004, 08:25
Hallo,
ich will mit Hilfe eines Shellscriptes die Umgebungsvariablen ändern.
Wird das Script nur unter der Angabe seines Names aufgerufen, dann wird es ja in einer Subshell gestartet. Wie kann ich dann in diesem Script auch die Umgebungsvariablen der Vatershell bearbeiten? Geht das auch mit export? Wenn ja wie genau?
thx, cya

peschmae
08-09-2004, 11:34
das geht wenn das Script mit

. /das/script/ist/hier.sh
(punkt-leerschlag-slash)
oder mit
source /das/script/ist/dort.sh

aufgerufen wird.

Mit export und so lässt sich da leider nichts machen.

MfG Peschmä

andreas.prause
15-09-2004, 21:33
Hallo,

wenn Du (auch mehrere) Variablen aus einem Script heraus setzen willst, geht
das tatsächlich nicht direkt - außer mittels . oder source, da dabei keine
subshell gestartet wird.
Du kannst aber z.B. die zu ändernden Variablen als Zuweisungskette auf
stdout ausgeben lassen (dann darf natürlich nichts anderes auf stdout
gehen!) und dann mit eval bewerten, z.B so:

script var.sh:
-------------
...
VAR1="irgendwas"
VAR2="'was anderes'"
VAR3="'noch was anderes'"
...
echo "VAR1=$VAR1 VAR2=$VAR2"
--------------

Aufruf:
$ VAR1=1 VAR2=2 VAR3=3
$ echo "$VAR1 $VAR2$VAR3"
1 2 3
$ eval $(var.sh)
$ echo "$VAR1:$VAR2:$VAR3"
irgendwas:was anderes:3
$

Hat den Vorteil gegenüber . var.sh, dass nur die Variablen geändert werden,
die explizit vom script ausgegeben werden, und auch die nur vom script
gebrauchten Variablen sind hinterher nicht mehr da. Ausgaben, die auf den
Schirm sollen, kann man ja auf stderr umleiten.

MfG AP