Como impedir que o terminal feche quando o programa foi iniciado com fins? [duplicado]

1

Se eu iniciar um terminal (qualquer terminal, por exemplo urxvt) como urxvt -e sleep 5 , um novo terminal será lançado, mas após 5 segundos o terminal será fechado, porque o programa sleep foi encerrado. Como posso iniciar um terminal com um programa na linha de comando, mas o terminal permanece ativo após o término desse processo?

Na prática, o que eu realmente gostaria de fazer é urxvt -e tmux new-session top , que abre o urxvt com uma sessão do tmux que está executando top . Mas quando eu pressiono q , top termina, o que também faz com que o tmux e o urxvt terminem também. Eu gostaria de quando eu sair do top para eu ser levado para um shell dentro do tmux.

    
por user779159 23.09.2016 / 15:19

2 respostas

1

O terminal (tmux) fecha quando é executado o comando que você disse para executar. Se você deseja executar top e, em seguida, um shell interativo, você precisa dizer para fazer isso. Combinar comandos é o trabalho do shell, portanto, execute um shell intermediário (que não é interativo) e diga a ele para executar os dois comandos sucessivamente.

urxvt -e tmux new-session sh -c 'top; "$SHELL"'
    
por 25.09.2016 / 01:32
0

Uma possibilidade:

gnome-terminal -e sh -c "sleep 5; bash"

O objetivo é executar o shell ( bash neste caso) após o comando inicial ser concluído. Infelizmente, gnome-terminal -e 'sleep 5; bash' simples não é possível porque toda a sentença sleep 5; bash é interpretada como um comando.

    
por 23.09.2016 / 15:38