Hi, On Tuesday 19 June 2012, Robert wrote: > Morgen, > > Am 15.06.2012 20:28, schrieb Sebastian Oeste: > > 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. > > Kann der ChildProzess am Ende nicht wieder den ParentProzess aufrufen > und ein Argument übergeben?
Nein. Wir sind hier ja nicht in Redmond - Unix/Linx-Prozesse sind ordentlich
voneinander isoliert. Umgebungsvariablen können nur vom Prozess selbst für
sich gesetzt oder beim Erzeugen des Prozesses vererbt werden. Es ist nicht
möglich andere Prozesse zu manipulieren (außer mit dem Debugger). Oder wie
fändest Du es wenn ein durchgeknalltes Script Dir die ganze Session
zerstören könnte?
> Der ParentProzess muss dann natürlich noch eine Gabelung bekommen.
Das muss dem Prozess aber weh tun! ... ;-)
Es gibt zwei Techniken, wie man einer aufrufenden Shell Daten übergeben
kann, die eine wurde schon erwähnt: source. Die andere: gib die notwendigen
Shell-Befehle auf stdout aus und rufe das Script mit eval auf:
--script.sh--
...
echo MYVAR=myvalue
echo export MYVAR
----
eval `script.sh`
Du kannst auch beides kombinieren, um dem Nutzer die Wahl zu lassen:
--script.sh--
#fuer source
MYVAR=myval
export MYVAR
#fuer eval
echo MYVAR=$MYVAR
echo export MYVAR
----
Aus dem Kontext schließe ich allerdings mal haarscharf dass Du lediglich ein
anderes Programm mit einem spezifischen LD_PRELOAD starten willst, also
warum nicht einfach einen Wrapper für das Programm bauen?
--myprog.sh--
export LD_PRELOAD=something.so
exec /usr/local/bin/myprog
echo Ups, myprog startet nicht.
exit 1
----
Wenn Du jetzt noch das Script in "myprog" statt "myprog.sh" umbenennst, es
in $HOME/bin legst und dafür sorgst dass $HOME/bin vor allem anderen in
$PATH steht, dann bist Du alle Sorgen los.
Konrad
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Lug-dd maillist - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
