En bash
la versión 4.4.12
, cuando escribo:
set -e
en el símbolo del sistema, el shell se cierra y devuelve 128
.
¿Por qué sucede esto cuando set -u
está bien?
Respuesta1
Si, por ejemplo, tiene un comando que devuelve un estado de salida distinto de cero como parte de la expansión de PROMPT_COMMAND
(que se ejecuta antes de imprimir el mensaje en bash
), esto hará que el shell salga inmediatamente cuando configure la errexit
opción con set -e
.
Otra posibilidad es que haya un DEBUG
conjunto de trampas que devuelva un estado de salida distinto de cero. Sin embargo, se ejecuta una DEBUG
trampa.antesSe invoca un comando, por lo que no provocará que el shell salga inmediatamente al presionar Enterdespués set -e
, sino antes de ejecutar el siguiente comando.
Con set -u
usted configura la nounset
opción Shell. Esta opción hará que el shell emita un error si intenta expandir cualquier variable no configurada de forma separada $@
y $*
. No hará que el shell se cierre, a menos que set -e
también esté vigente.
Con set -u
efectoyuna variable no configurada en PS1
el shellvoluntadsalga tan pronto como configure la errexit
opción con set -e
.