Ändern des aktuellen Verzeichnisses vom untergeordneten Prozess aus

Ändern des aktuellen Verzeichnisses vom untergeordneten Prozess aus

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"'

verwandte Informationen