Qualquer comando no meu terminal que saia com código diferente de zero fecha a janela do meu terminal

Qualquer comando no meu terminal que saia com código diferente de zero fecha a janela do meu terminal

No começo isso foi um pouco engraçado, como jogar "Bash Roulette"... mas agora está ficando velho haha

Qualquer comando no meu terminal que saia com código diferente de zero fecha a janela do meu terminal

Disseram-me que talvez eu tenha set -edefinido algum script bash em algum lugar das fontes do meu terminal.

Eu verifiquei .bash_profile/ .bashrc/ .profilee não parece que set -eesteja lá.

Haveria outros culpados óbvios?

Responder1

Tudo bem, de fato, foi um erro set -eque causou meu problema.

A maneira que encontrei set -eestava usandobash -lx

A melhor coisa a fazer seria usar:

bash -lx > lx.log 2>&1

em seguida, abra esse arquivo de log e faça uma pesquisa por set...

depois de descobrir isso, set -evocê pode remover essa linha e seu problema deverá desaparecer! (Reiniciar a máquina pode ser uma boa ideia).

No meu caso, estava set -eem um arquivo que .bash_profile origina, mas a linha não estava no próprio .bash_profile.

Responder2

Se você quer apenas resolver o problema, inclua set +eno seu .bashrc- pelo menosfim.

Você pode cavar - há muitos outros lugares onde set -epode estar - mas isso resolverá tudo.

Se, no entanto, fizer set -eparte do seu, $PROMPT_COMMANDo procedimento acima não funcionará. Experimente printf '%s\n' "$PROMPT_COMMAND"e veja o que há nele.

Responder3

No meu caso, o set -enão estava em nenhuma das minhas startups do bash e o anexo set +eao meu .bashrcnão estava consertando.

Acontece que set -eestava em um script bash que eu executo frequentemente para o meu projeto, e eu estava executando esse script . ./my-dev-script.shpara que ele funcionassehonre meus apelidos do bash.

O que eu não percebi é que executá-lo com aquele extra .na frente também fazia com que as opções do bash no script fossem transferidas para todas as minhas sessões regulares de terminal.

Preciso de uma nova solução para executar um script bash que respeite meus aliases pessoais do bash, mas pelo menos encontrei a fonte do rogue set -e. Apenas executá-lo normalmente ./my-dev-script.shevita o cenário frustrante da "Roleta Bash".

informação relacionada