Wie können Sie die Ausführung eines Shell-Skripts in einem untergeordneten Prozess veranlassen und gleichzeitig weiterhin die Möglichkeit haben, das aktuelle Verzeichnis der aufrufenden Shell zu ändern?
Antwort1
Sie können nicht.
Die Umgebung der übergeordneten Shell wird beim Start des untergeordneten Prozesses in diesen kopiert. Von diesem Zeitpunkt an sind die beiden Prozesse unterschiedlich und völlig getrennt. Der untergeordnete Prozess kann die Umgebung des übergeordneten Prozesses nicht direkt ändern.
Die einzige Möglichkeit für das Kind, Einfluss auf seine Eltern auszuüben, besteht darin, ihnen eine Nachricht zu senden und diese dann entsprechend zu handeln:
eval "$( bash -c 'echo "cd /"' )" # message through command string to stdout
oder
# message through USR1 signal triggers predefined action
trap 'cd /' USR1
bash -c 'kill -s USR1 "$PPID"'