O comando funciona no script (ou -c), mas não quando executado diretamente (em um shell interativo)

0

Isso funciona:

$ bash -c 'while true; do echo foo; sleep 1; done'
foo
foo
...

Mas não é isso:

$ while true; do echo foo; sleep 1; done
bash: syntax error near unexpected token 'done'

Eu vejo o mesmo problema com o zsh:

zsh: parse error near 'done'

NOTA: o traço funciona.

    
por Tshepang 25.08.2018 / 12:15

1 resposta

0

Problemas como este são freqüentemente mal interpretados, já que poucas pessoas percebem que aliases estão desativados em shells não interativos.

No seu caso, foi um alias chamado do que causou o problema.

Para investigar problemas semelhantes, geralmente ajuda iniciar um novo shell com:

HOME=/tmp $shell

e tente novamente. Isso evita que o shell interativo leia scripts de inicialização.

    
por 25.08.2018 / 13:01

Tags