Executar no terminal não está funcionando

4

Eu sou novo no Ubuntu e estava tentando executar este script:

#!/usr/bin/env bash
echo hello world

Funciona bem se eu abrir o terminal primeiro e manualmente invocá-lo. Como ./test .
Eu configurei "Perguntar a cada vez" no arquivo prefs:

Isso também funciona bem:

Agora clico em Executar no terminal. E ai! Nada acontece.
Espero que abra o terminal e faça um eco ao mundo. O que estou fazendo de errado? Esta é uma nova instalação do Ubuntu junto com o Windows no site do Ubuntu.

    
por Winger Sendon 07.07.2016 / 16:32

1 resposta

8

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 comando exit ou Ctrl + D - acho muito irritante a janela do terminal também não fecha mais.

    
por Byte Commander 07.07.2016 / 16:45