Ich habe ein Shell-Skript, das das Verzeichnis wechselt und dann ausgeführt wird. Ich möchte, dass der Verzeichniswechsel nach Beendigung des Skripts an die Eingabeaufforderung weitergeleitet wird.
Also führe ich es mit aus:
. script
Wenn das Skript jetzt jedoch beendet wird, wird das gesamte Fenster beendet. Gibt es eine Möglichkeit, dies zu beheben?
Meine Shell ist Bash.
Antwort1
Es gibt zwei Möglichkeiten, dies auf dem Mac zu beheben
A> Gehen Sie zu Ihren Terminaleinstellungen, wählen Sie [Allgemein] und deaktivieren Sie das Kontrollkästchen „Fenster schließen, wenn Shell sauber beendet wird“.
B> Richten Sie Ihren bevorzugten Texteditor auf ~/Library/Preferences/com.apple.Terminal.plist
Suchen Sie die Zeilen:
<Taste>ShellExitAction</Taste> < Ganzzahl>1< / Ganzzahl>
ändern Sie die 1 in eine 2 und starten Sie die Terminal-App neu.
B ist im Grunde dasselbe wie A, wird aber manuell durchgeführt.
Antwort2
Enthält es script
eine exit
Anweisung? Denken Sie daran, dass Punkt (Sourcing) Ihren Code in der aktuellen Shell ausführt. Wenn es also ein hat exit
, wird Ihre aktuelle Shell beendet. Sie sollten das Skript überprüfen und alle exit
in ändern return
.
Sie können möglicherweise erkennen, ob die Quelle (wo Sie möchten return
) und die Ausführung (wo Sie möchten exit
) vorhanden ist.
[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'