Saída do script Bash em erro (set -e) fecha a sessão SSH putty

4

Estou usando set -e para forçar meu script a sair sempre que ocorrer um erro ao executar um comando. No entanto, isso tem o efeito colateral de fechar minha janela de terminal de putty que estou usando para conectar via SSH ao host.

Como faço para impedir que o terminal feche?

    
por DD. 09.07.2012 / 08:26

1 resposta

13

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.

    
por 09.07.2012 / 08:33

Tags