
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 sleep
programa 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 top
abrir urxvt con una sesión tmux que se está ejecutando top
. Pero cuando presiono q
, top
finaliza, lo que también hace que tmux y urxvt finalicen también. Me gustaría que cuando salga top
me 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 top
y 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 ( bash
en 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; bash
se interpreta como una orden.