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

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an