Ändern Sie das Verzeichnis eines übergeordneten Prozesses aus einem untergeordneten Prozess

Ich habe ein cooles Python-Programm erstellt, das Menschen hilft, zu anderen Verzeichnissen in einer interaktiven Weise zu navigieren. Wenn sie dort ankommen, würde ich sie gerne mit Enter betreten und das Programm verlassen, das sie im ausgewählten Verzeichnis verlässt. Allerdings sind Sie immer am Ende in der gleichen dir Sie in b / c nur die Kind-Prozess, dass python läuft in tatsächlich ändert Verzeichnisse und das übergeordnete Prozess 'Verzeichnis bleibt unverändert.

  • Entfernen Sie alle Zeilen mit dem Wort NOT im Wörterbuch
  • Die Ausgabe eines anderen Programms als Eingang auf der Fliege erhalten
  • Aufruf einer Python-Funktion aus Bash-Skript
  • Berechtigung verweigert beim Start python Skript über bash
  • Python kann kein Terminal-Skript ausführen, mit sh noch bash [duplicate]
  • Führen Sie alle Python-Dateien in einem Verzeichnis aus
  • Python dynamische Klassennamen
  • Verwendung von eval in Python?
  • Python - Dynamische Variablen
  • Mindestkostenpfad in Matrix
  • Dynamische Mehrfachvererbung in Python
  • Wie finde ich alle unbenutzten und ersten fehlenden Nummer in einem Array (in Python)?
  • One Solution collect form web for “Ändern Sie das Verzeichnis eines übergeordneten Prozesses aus einem untergeordneten Prozess”

    Anstatt das Programm direkt auszuführen , gib ein Wrapper-Skript ein . Ihr Programm, wenn es abschließt, signalisiert dem Wrapper-Skript, welches Verzeichnis zu cd zu. Das Sourced Wrapper Skript macht die cd .

    Ein anderes Datei-Browsing-Dienstprogramm, Midnight Commander ( mc ), hat das gleiche Problem angesprochen. Hier ist sein Wrapper-Skript:

     MC_USER=`id | sed 's/[^(]*(//;s/).*//'` MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$" /usr/bin/mc -P "$MC_PWD_FILE" "$@" if test -r "$MC_PWD_FILE"; then MC_PWD="`cat "$MC_PWD_FILE"`" if test -n "$MC_PWD" && test -d "$MC_PWD"; then cd "$MC_PWD" fi unset MC_PWD fi rm -f "$MC_PWD_FILE" unset MC_PWD_FILE 

    Wie Sie sehen können, definiert dies eine temporäre Datei und übergibt diesen Dateinamen an mc mit der Option -P . Bevor mc wird, schreibt er das ausgewählte Verzeichnis in diese temporäre Datei. Diese Skripts liest diese temporäre Datei und CDs zum gewählten Verzeichnis.

    Um es bequem zu machen, dieses Wrapper-Skript auszuführen, erstellt man einen Shell-Alias:

     alias mc=". /usr/lib/mc/bin/mc-wrapper.sh"' 

    Mit leichten Änderungen erwarte ich, dass du diese Arbeit mit deinem Programm machen kannst.

    Python ist die beste Programmiersprache der Welt.