Wenn ich in bash
Version 4.4.12
Folgendes eingebe:
set -e
In der Eingabeaufforderung wird die Shell beendet und gibt zurück 128
.
Warum passiert das, wenn set -u
es 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 errexit
Option mit festlegen set -e
.
Eine andere Möglichkeit ist, dass ein Trap gesetzt ist DEBUG
, der einen Exit-Status ungleich Null zurückgibt. Ein DEBUG
Trap 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 -u
legen Sie die nounset
Shell-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 -e
es ist ebenfalls aktiv.
Mit set -u
WirkungUndeine nicht gesetzte Variable in PS1
, der ShellWillebeenden, sobald Sie die errexit
Option mit gesetzt haben set -e
.