Digitando 'set -e' mata o bash

0

Em 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á bem?

    
por Tom Hale 15.04.2017 / 08:13

1 resposta

3

Se, por exemplo, você tiver um comando que esteja 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 acionará o shell para sair imediatamente quando você definir a opção errexit com set -e .

Outra possibilidade é que haja um conjunto de trap DEBUG que retorne um status de saída diferente de zero. Uma armadilha de DEBUG é no entanto executada antes de um comando ser invocado, portanto não fará com que a shell saia imediatamente quando você pressionar Enter após set -e , mas antes lançando o próximo comando.

Com set -u , você define a opção nounset shell. Esta opção fará com que o shell emita um erro se você tentar expandir qualquer variável não definida além do formulário $@ e $* . Não fará com que o shell saia, a menos que set -e também esteja em vigor.

Com set -u em efeito e uma variável não definida em PS1 , o shell sairá assim que você definir a opção errexit com set -e .

    
por 15.04.2017 / 08:33

Tags