Ohne das jetzt gerade ausprobieren zu können - klappt es eventuell wenn du das skript mittels '. skript.sh' oder 'source skript.sh' ausführst? Afair führt das das Skript in der aktuellen Shell Instanz aus und macht eben keinen Kindprozess auf.
Grüße, Jens
-- Jens Krämer jk@jkraemer.net
Am 15.06.2012 um 20:28 schrieb Sebastian Oeste oeste.sebastian@googlemail.com:
Hi,
Ich muss unter gewissen Umständen bestimmte Variablen setzten, leider sind die Umstände so bestimmt das ich diese Variablen nicht in der .bashrc setzten kann. Also dachte ich mir, kein Problem dafür gibt es Skripte. Nun glaube ich das was ich vorhabe geht generell garnicht. Folgendes Skript:
WRAPLIB=$HOME/SHMEM/lib/libshmemWrap.so
if [ -e $WRAPLIB ] then export LD_PRELOAD=${LD_PRELOAD:-$WRAPLIB} echo $LD_PRELOAD else echo "$WRAPLIB does not exists!" fi
Soweit sogut, nur nach Ausführung des Skriptes ist die Variable $LD_PRELOAD nicht gesetzt.
$ echo $LD_PRELOAD
$
...kurzer Moment der Verwunderung.... Alles klar! Kann ja nicht, wie soll die Bash denn aus einem Kind-Prozess eine Variable an den Eltern-Prozess vererben !?! Auch das The Linux Documentation Project sagt dazu:
"A script can export variables only to child processes, that is, only to commands or processes which that particular script initiates. A script invoked from the command-line cannot export variables back to the command-line environment. Child processes cannot export variables back to the parent processes that spawned them."
Das sieht schon mal ziemlich endgültig aus und macht dummerweise auch noch Sinn. Nun bräuchte ich aber leider wirklich eine Lösung die genau das macht. Da kommen noch ein paar mehr Variablen dazu die ich hier aus Gründen der Übersichtlichkeit weggelassen habe. Hat einer von euch ne gute Idee wie man das erreichen kann ohne die ganzen export's auf der Konsole zu Tippen ?
Ich bin für jede Antwort Dankbar.
Beste grüße, Sebastian
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd