¿Cómo evitar que la terminal se cierre cuando finaliza el programa con el que se inició?

¿Cómo evitar que la terminal se cierre cuando finaliza el programa con el que se inició?

Si inicio una terminal (cualquier terminal, por ejemplo urxvt) como urxvt -e sleep 5, entonces se inicia una nueva terminal pero después de 5 segundos la terminal se cierra porque el sleepprograma ha finalizado. ¿Cómo puedo iniciar una terminal con un programa en la línea de comando, pero hacer que la terminal permanezca activa una vez finalizado el proceso?

En la práctica, lo que realmente me gustaría hacer es urxvt -e tmux new-session topabrir urxvt con una sesión tmux que se está ejecutando top. Pero cuando presiono q, topfinaliza, lo que también hace que tmux y urxvt finalicen también. Me gustaría que cuando salga topme lleven a un shell dentro de tmux.

Respuesta1

La terminal (tmux) se cierra cuando se ejecuta el comando que usted le indicó que ejecutara. Si desea ejecutar topy luego un shell interactivo, debe indicarle que lo haga. Combinar comandos es trabajo del shell, así que ejecuta un shell intermedio (que no es interactivo) y dileélpara ejecutar los dos comandos en sucesión.

urxvt -e tmux new-session sh -c 'top; "$SHELL"'

Respuesta2

Una posibilidad:

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

El punto es ejecutar el shell ( bashen este caso) después de que finalice el comando inicial. Desafortunadamente, lo simple gnome-terminal -e 'sleep 5; bash'no es posible porque la oración completa sleep 5; bashse interpreta como una orden.

información relacionada