On Thu, 30 Apr 1998, Matthias Morche wrote:
Boris Zentner wrote: ...
Ich habe ein problem mit diesem kleinen bashscript ... es funktioniert nicht wie ich es erwarte :-) ...
Schick doch mal die Ausgabe (stdout und stderr) von folgendem Skript zu, und schreib, wo etwas nicht so funtioniert, wie Du denkst, daß es sollte:
Ich screibe mal, was ich erreichen wollte In den ersten drei zeilen moechte ich eine Datei erzeugen, die variablen setzt, die ich spaeter importieren moechte. Dies soll durch die Zeile . /tmp/VARS geschehen. Das funktioniert aber nur, wenn ich die su Zeile weglasse, die aber fuer mien script unerlaesslich ist. Ich moechte erreichen, das root innerhalb des scripts zu boing mutiert und in der echo Zeile *** /tmp/test???? *** erscheint. Nun zur ausgabe deines scriptes, ich habe die ** in der echo Zeile durch XX ersetzt, dammit die * nicht expandiert werden: #!/bin/sh -x ###################################################### cat <<ENDE >/tmp/VARS BBNAME=/tmp/test$$ ENDE h -x << BOING & sh -x << ENDE su boing . /tmp/VARS echo XX $BBNAME XX ENDE BOING AUSGABE: ---------------------- + cat + sh -x + sh -x + su boing XX XX ---------------------- _ _ ----------------------------------------|S: Bullet| | |__ ___ _ __(_) ___ | proofed | | '_ \ / _ \| '__| |/ __) ,,, boris@ino.de | shoes! | | |_) | (_) | | | |\__ \ (o o) | | |_.__/-\___/|_|--|_|(___/-ooO-(_)-Ooo---------------------------------- -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Boris Zentner wrote:
#!/bin/sh -x ###################################################### cat <<ENDE >/tmp/VARS BBNAME=/tmp/test$$ ENDE
sh -x << BOING & sh -x << ENDE su boing . /tmp/VARS echo XX $BBNAME XX ENDE BOING
Hallo Boris, habe bei mir versucht, das Problem nachzuvollziehen. Es stimmt, es gibt ein Problem. :-) Bei mir ist es aber so, daß das Script auch ohne 'su' die Variable nicht ausgibt. Leider konnte ich nicht ergründen, woran das liegt. So, wie ich es sehe, geht es Dir aber im wesentlichen darum, daß Du ein Script als anderer User ausführen willst, wobei Du noch einige Shell-Variablen übergeben willst. 1) Der eigendliche Gag des inline-Scripts ist, daß Shellvariablen im inline-Text zuerst substituiert werden, d.h. #!/bin/bash ###################################################### export VAR=/Hallo/Boris su wwwrun <<ENDE echo "Hallo Boris," echo "die ID ist $(id)" id ENDE $(id) wird noch vor der Ausführung von der Shell 'su' aus- geführt un d erstetzt. Das gleiche gilt für sonstige Shell- Variablen. Damit ist es kein Problem, direkt an das SU-Script variable Bestandteile zu übergeben, z.b. VAR="Variable" su wwwrun <<ENDE echo $VAR ENDE Zu beachten: VAR wird noch vor der Ausführung von 'su' ersetzt. 2) Bei dem 'su'-Kommando gibt es eine Option '--preserve-environment', die Du vielleicht suchst. Ciao Andreas Mock -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
participants (2)
-
Andreas.Mock@augsburg.baynet.de
-
boris@ino.de