Wenn Sie ein Skript in Ihrer Anmeldeshell ausführen, wird ein neuer Subprozess generiert und die Skriptausführung in einer Subshell ausgeführt. Sobald das Skript abgeschlossen ist, wird die Subshell beendet und Sie kehren zur Login-Shell zurück ein cd durch ein script, das Verzeichnis wird in den mit cd angegebenen Pfad geändert, aber wenn das Skript beendet ist, kehren Sie zu Ihrer Login-Shell in das Arbeitsverzeichnis zurück, von wo aus Sie das Skript gestartet haben.
Der Weg zur Überwindung dieser Anwendung ist,
source yourscript.sh
welche Quelle tut, ist es das Skript als TCL Skript ausgeführt, das heißt es die gleiche Wirkung, wie wenn Sie jede Zeile eingegeben auf der Kommandozeile Ihrer Login hat Shell und es von dort ausgeführt. Wenn das Skript nach cd beendet wird, bleibt es in diesem Verzeichnis.
Ich mache ein paar Änderungen im Beispielcode. In bash, ** cd ** sholud in Alias oder Funktion. – qrtt1
Ahnlich: [Warum funktioniert "cd" nicht in einem Bash-Shell-Skript? "] (Http://stackoverflow.com/questions/255414/why-doesnt-cd-work-in-a-bash-shell-script) –