
Se eu iniciar um terminal (qualquer terminal, por exemplo urxvt) como urxvt -e sleep 5
, então um novo terminal é iniciado, mas após 5 segundos o terminal fecha, porque o sleep
programa foi finalizado. Como posso iniciar um terminal com um programa na linha de comando, mas fazer com que o terminal permaneça ativo após o término do processo?
Na prática, o que eu realmente gostaria de fazer é urxvt -e tmux new-session top
abrir o urxvt com uma sessão tmux em execução top
. Mas quando pressiono q
, top
termina, o que também faz com que tmux e urxvt terminem. Gostaria que, ao sair, top
fosse levado para um shell dentro do tmux.
Responder1
O terminal (tmux) fecha quando é executado o comando que você instruiu. Se você deseja executar top
um shell interativo, você precisa instruí-lo a fazer isso. Combinar comandos é tarefa do shell, então execute um shell intermediário (que não é interativo) e informeistopara executar os dois comandos em sucessão.
urxvt -e tmux new-session sh -c 'top; "$SHELL"'
Responder2
Uma possibilidade:
gnome-terminal -e sh -c "sleep 5; bash"
O objetivo é executar o shell ( bash
neste caso) após a conclusão do comando inicial. Infelizmente, simples gnome-terminal -e 'sleep 5; bash'
não é possível porque a frase inteira sleep 5; bash
é interpretada como um comando.