Einige Shellbefehle (z. B. cd
) betreffen die aktuelle Shell und ihre untergeordneten / absteigenden Prozesse, können sich jedoch nicht auf die übergeordnete Shell auswirken. Wenn Sie ein Skript als normalen Befehl ausführen (z. B. scriptname.sh
oder ), wird es in einem separaten Shell-Prozess ausgeführt. Wenn dieser Shell-Prozess beendet ist, werden die Auswirkungen dieser Befehle aufgehoben. Deshalb Skripte wie ich oft am Ende mit, ,, oder was auch immer - die Ursache Prozess, der in der neuen Umgebung ist, als eine interaktive Shell zu bestehen../scriptname.sh
exec sh
exec bash
exec zsh
Wenn Sie dies nicht auf diese Weise tun möchten, können Sie das Skript nur in Ihrer interaktiven Hauptshell ausführen . In Bash können Sie dies mit tun
Quelle skript .sh
oder
. Skriptname .sh
(Möglicherweise müssen Sie verwenden, wenn sich das Skript im aktuellen Verzeichnis befindet.) Ich bin mir ziemlich sicher, dass es dieselbe Funktionalität hat. Die Syntax kann unterschiedlich sein. Überprüfen Sie die Dokumentation für Ihre Shell../scriptname.sh
zsh
Wenn Sie Schwierigkeiten haben, sich dies zu merken (oder wenn es umständlich wird), sollten Sie einen Alias definieren.