Digitar `set -e` mata o bash

Digitar `set -e` mata o bash

Na bashversão 4.4.12, quando digito:

set -e

no prompt de comando, o shell sai, retornando 128.

Por que isso acontece quando set -uestá 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 errexitopção com set -e.

Outra possibilidade é que exista um DEBUGconjunto de armadilhas que retorne um status de saída diferente de zero. No entanto, uma DEBUGarmadilha é 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 -uvocê defina a nounsetopçã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 -etambém esteja em vigor.

Com set -uefeitoeuma variável não definida no PS1shellvaisaia assim que definir a errexitopção com set -e.

informação relacionada