Como evitar que o terminal feche quando o programa com o qual foi iniciado terminar?

Como evitar que o terminal feche quando o programa com o qual foi iniciado terminar?

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 sleepprograma 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 topabrir o urxvt com uma sessão tmux em execução top. Mas quando pressiono q, toptermina, o que também faz com que tmux e urxvt terminem. Gostaria que, ao sair, topfosse levado para um shell dentro do tmux.

Responder1

O terminal (tmux) fecha quando é executado o comando que você instruiu. Se você deseja executar topum 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 ( bashneste 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.

informação relacionada