Seu problema:
O problema é que echo hello world
é executado em milissegundos, mais rápido que a janela do terminal é capaz de aparecer.
Isso significa que seu script já sai antes que o terminal fique visível e, portanto, sua inicialização é cancelada e você não vê nada.
Solução 1 - modifique o script e adicione um atraso:
Você pode adicionar um atraso (aqui: 5 segundos) no final do script para que ele seja executado por mais tempo e você tenha tempo de visualizar o resultado antes que o script seja encerrado e a janela do terminal seja fechada:
#!/usr/bin/env bash
echo hello world
sleep 5
Solução 2 - modifique o script e aguarde um pressionamento de tecla:
Você também pode adicionar um comando read
ao final do seu script para aguardar a entrada do teclado antes do script sair.
O parâmetro -s
causa entrada silenciosa, ou seja, sua tecla pressionada não será ecoada no terminal.
-n1
permite que ele leia apenas um único caractere e retorna imediatamente depois, em vez de esperar por Enter para ser pressionado.
O argumento -p "Press any key to exit..."
, na verdade, especifica o texto a ser impresso antes de esperar pela entrada.
#!/usr/bin/env bash
echo hello world
read -s -n1 -p "Press any key to exit..."
Solução 3 - altere a preferência de gnome-terminal
para manter a janela aberta:
Inicie uma janela gnome-terminal
, abra o menu Editar e selecione Preferências de perfil . Navegue até a guia Comandos . Você verá um menu suspenso chamado Quando o comando sair:
Selecione Mantenha o terminal aberto aqui e feche a janela de configurações.
A partir de agora, quando você clica duas vezes em um script e seleciona para executá-lo em um terminal, a janela não se fecha, mas permanece aberta e exibe um banner informando sobre o status de saída do script:
Atenção!
Esta configuração também se aplica se você abrir manualmente uma janela de terminal e tentar fechá-la saindo do Bash usando o comandoexit
ou Ctrl + D - acho muito irritante a janela do terminal também não fecha mais.