Die Eingabe von „set -e“ beendet Bash

Die Eingabe von „set -e“ beendet Bash

Wenn ich in bashVersion 4.4.12Folgendes eingebe:

set -e

In der Eingabeaufforderung wird die Shell beendet und gibt zurück 128.

Warum passiert das, wenn set -ues in Ordnung ist?

Antwort1

Wenn Sie beispielsweise einen Befehl haben, der als Teil der Erweiterung von PROMPT_COMMAND(die vor dem Drucken der Eingabeaufforderung in ausgeführt wird bash) einen Exit-Status ungleich Null zurückgibt, dann wird die Shell sofort beendet, wenn Sie die errexitOption mit festlegen set -e.

Eine andere Möglichkeit ist, dass ein Trap gesetzt ist DEBUG, der einen Exit-Status ungleich Null zurückgibt. Ein DEBUGTrap wird jedoch ausgeführtVorein Befehl aufgerufen wird, sodass die Shell nicht sofort beendet wird, wenn Sie Enternach drücken set -e, sondern bevor der nächste Befehl ausgeführt wird.

Mit set -ulegen Sie die nounsetShell-Option fest. Diese Option führt dazu, dass die Shell einen Fehler ausgibt, wenn Sie versuchen, eine nicht festgelegte Variable außer $@und zu erweitern $*. Die Shell wird nicht beendet, es sei denn, set -ees ist ebenfalls aktiv.

Mit set -uWirkungUndeine nicht gesetzte Variable in PS1, der ShellWillebeenden, sobald Sie die errexitOption mit gesetzt haben set -e.

verwandte Informationen