Ä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.

  • Python entfernt Telefonnummern aus String
  • Wie kann ich ein Python-Programm in ein Bash-Skript einfügen?
  • Wie gebe ich eine Python-Variable in Bash?
  • Bash: Variable in einfachem Zitat
  • Piping to Head Ergebnisse in gebrochenen Rohr in Shell-Skript aus Python genannt
  • Wie kann man das Ergebnis eines ausgeführten Shell-Befehls in einer Variable in Python speichern?
  • Wie kann man den Argumenttyp in einer dynamisch typisierten Sprache angeben, dh Python?
  • Wie kann man die Basisklasse der Instanzen zur Laufzeit dynamisch verändern?
  • Bevorzugte Möglichkeit, die Methode eines Objekts dynamisch aufzurufen
  • Den Namen erhalten, der nicht aus nameError in python definiert ist
  • Mindestkostenpfad in Matrix
  • Was ist der Punkt der heterogenen Arrays?
  • 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.