Na bash
versão 4.4.12
, quando digito:
set -e
no prompt de comando, o shell sai, retornando 128
.
Por que isso acontece quando set -u
está tudo bem?
Responder1
Se, por exemplo, você tiver um comando que está retornando um status de saída diferente de zero como parte da expansão de PROMPT_COMMAND
(que é executada antes de imprimir o prompt em bash
), isso fará com que o shell saia imediatamente quando você definir a errexit
opção com set -e
.
Outra possibilidade é que exista um DEBUG
conjunto de armadilhas que retorne um status de saída diferente de zero. No entanto, uma DEBUG
armadilha é executadaantesum comando é invocado, portanto, não faria com que o shell fosse encerrado imediatamente quando você pressionasse Enterdepois de set -e
, mas antes de iniciar o próximo comando.
Com set -u
você defina a nounset
opção shell. Esta opção fará com que o shell emita um erro se você tentar expandir qualquer variável não definida além de form $@
e $*
. Isso não fará com que o shell saia, a menos que set -e
também esteja em vigor.
Com set -u
efeitoeuma variável não definida no PS1
shellvaisaia assim que definir a errexit
opção com set -e
.