Escribir `set -e` mata bash

Escribir `set -e` mata bash

En bashla 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 -uestá 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 errexitopción con set -e.

Otra posibilidad es que haya un DEBUGconjunto de trampas que devuelva un estado de salida distinto de cero. Sin embargo, se ejecuta una DEBUGtrampa.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 -uusted configura la nounsetopció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 -etambién esté vigente.

Con set -uefectoyuna variable no configurada en PS1el shellvoluntadsalga tan pronto como configure la errexitopción con set -e.

información relacionada