Como executar um script sem fechar o terminal?

55

Eu tenho um script no arquivo bla.sh e é executável. Quando eu clico nele, o script é executado e a janela é fechada. Eu gostaria que a janela ficasse aberta .

Algo parecido com o comando cmd /k** command no Windows.

P.S. Eu não quero usar pause , mas quero poder escrever mais comandos depois que o script foi executado.

    
por UAdapter 06.01.2011 / 18:49

7 respostas

65

Coloque $SHELL no final do seu script:

Uma pequena falha: como gnome-terminal não está executando o bash como seu shell, ele será considerado como um aplicativo e exibirá um aviso sobre isso quando você tentar fechar o terminal :

There is still a process running in this terminal
Closing the terminal will kill it.

Não encontrei uma maneira legal de ocultar esse aviso. Se você quiser, pode desativá-lo totalmente executando:

gconftool --set /apps/gnome-terminal/global/confirm_window_close --type boolean false

Isso não acontece se você estiver usando xterm em vez de gnome-terminal; deveria te incomodar.

    
por Stefano Palazzo 06.01.2011 / 19:51
10

Usando o terminal Gnome

Usando o app gnome-terminal, bash no final da string de comando e chamando o script com a opção -c. Por exemplo:

gnome-terminal -e "bash -c ~/script.sh;bash"

Isso faz o seguinte:

  1. abre o gnome-terminal
  2. executa o script script.sh
  3. mostra o prompt do bash após o script terminar.

Você pode sair da janela do gnome-terminal fechando a janela ou digitar exit no prompt do bash. Ou você pode digitar mais comandos conforme solicitado.

    
por Karsvo 15.08.2012 / 21:06
6

Se você estiver usando xterm use -hold .

    
por Ramy 29.01.2013 / 09:54
5

Se você tiver acesso ao script, também poderá adicionar o seguinte código:

read

Esse código aguardará uma entrada antes de fechar, de modo que o terminal permanecerá aberto até que você pressione Enter.

    
por jaycode 30.03.2017 / 08:35
4

Use a opção bash de --init-file com um canal temporário:

bash --init-file <(echo './<script_name>')

Ex:

bash --init-file <(echo './bla.sh')
    
por Prem Anand 20.03.2015 / 10:58
1

Usar xterm e acrescentar ;bash no final da string de comando funciona. Por exemplo:

xterm -e "bash ~/script.sh;bash"

Isso faz o seguinte:

  1. abre o xterm
  2. executa o script script.sh
  3. mostra o prompt do bash após o script terminar.

Você pode sair da janela xterm fechando a janela ou digitar exit no prompt do bash. Ou você pode digitar mais comandos conforme solicitado.

    
por Karsvo 15.08.2012 / 02:34
1
xterm -e bash --rcfile bla.sh

Isso executará o script em uma nova janela e até mesmo lhe dará o controle da janela depois que ela for concluída.

No entanto, a nova janela não carregará ~/.bashrc como normal, já que executamos bla.sh . Isso pode ser solucionado colocando

. ~/.bashrc

na parte superior de bla.sh

    
por Steven Penny 10.03.2014 / 05:28