Como você está executando o script? As circunstâncias da saída de um subprocesso não devem afetar o shell que o executou ... a menos que você esteja enviando o script para o shell em execução.
Por exemplo ...
./my-script.sh # this should terminate and leave your shell intact
. my-script.sh # this might terminate and take your shell with it
Um shell 'nix é um processo em execução de algum interpretador de shell (por exemplo, bash
, ksh
, csh
). "source" de um script (que você pode fazer em bash
com o comando source
ou seu alias .
) diz ao interpretador para abrir o arquivo indicado e processar seu conteúdo. Com efeito, o script se torna um atalho para inserir comandos de forma interativa. Funções definidas, variáveis definidas e (no seu caso) exit
s processadas têm efeito no shell original.
./my-script.sh
é um caminho de arquivo simples. ./
refere-se ao diretório atual e my-script.sh
a um script dentro desse diretório. Quando o arquivo é marcado como executável, o arquivo será executado. No caso de um script, isso significa iniciar um novo processo de intérprete (conforme definido pela linha #!
na parte superior do script ou /bin/sh
por padrão) e usá-lo para interpretar o script. Funções definidas, variáveis definidas e exit
s processadas são confinadas a esse novo processo de intérprete.