Kann das Verzeichnis geändert werden und die Änderung bleibt bestehen, wenn das Skript beendet ist?

Beim Versuch, @ zu beantwort eine Frage für einen anderen Benutzer, Ich bin auf etwas gestoßen, das meine Neugier geweckt hat:

import os
os.chdir('..')

Wird das Arbeitsverzeichnis für Python ändern, also wenn ich in @ b/home/username/, und ich laufeos.chdir('..'), jeder nachfolgende Code funktioniert so, als wäre ich in/home/. Zum Beispiel, wenn ich dann tue:

import glob
files = glob.glob('*.py')

files wird eine Liste von @ se.py Dateien in/home/ anstatt in/home/username/. Sobald das Skript beendet ist, bin ich jedoch wieder in/home/username/ oder aus welchem Verzeichnis ich das Skript ursprünglich ausgeführt habe.

Ich habe festgestellt, dass dasselbe mit Shell-Skripten passiert. Wenn ich folgendes Skript habe:

#!/bin/bash

cd /tmp
touch foo.txt

Das Skript von @ ausführ/home/username/ erstellt eine Dateifoo.txt im/tmp/, aber wenn das Skript beendet ist, bin ich immer noch in/home/username/ not/tmp/.

Ich bin gespannt, ob es einen fundamentalen Grund gibt, warum das Arbeitsverzeichnis in diesen Fällen nicht "permanent" geändert wird, und wenn es ist eine Möglichkeit, es dauerhaft zu ändern, z. B. ein Skript mit @ auszuführ~$ python myscript.py und lassen Sie das Terminal, von dem aus das Skript ausgeführt wurde, in einem anderen Verzeichnis enden, wenn die Ausführung des Skripts abgeschlossen ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage