
estoy siguiendoeste tutorialpara programar la creación de ventanas tmux.
tmux new-window t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp'
a veces cierro myapp después de haber iniciado tmux, quiero volver a un shell en ese directorio, pero esto cierra la ventana por completo. ¿Cuál es la mejor manera de arreglar esto? Creo que al menos una respuesta implica ejecutar un Shell y que ese Shell ejecute comandos, pero no estoy seguro de cuál es la mejor manera de lograrlo.
Respuesta1
tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp; $SHELL'
iniciará su shell predeterminado cuando los comandos anteriores hayan terminado (independientemente de su valor de retorno, es decir, incluso si no los eliminó).
Si solo desea acceder al shell si el perl
proceso finalizó o falló (y cerrar la ventana tmux si tuvo éxito), use
tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp || $SHELL'
Respuesta2
tmux
ya abre un shell en el que ejecuta los comandos cd
y perl
. Si no quieres correrotroshell debajo de eso, solo para continuar una sesión interactiva (o evitar que la ventana se cierre, sin usar set-remain-on-exit
), puedes hacer:
tmux new-window -t $SESSION:0 -k -n MAIN
tmux send-keys 'cd ~/main/ && perl -Ilib myapp' C-m
Si desea otro shell bajo el tmux
'shell creado y desea que ese shell ejecute los comandos y se vuelva interactivo (lo cual es diferente de la respuesta @n.st que ejecuta el shell después), puede hacer:
tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "cd ~/main/ && perl -Ilib myapp")'
y si es un problema que bash
tiene un entorno incompleto haz algo como:
tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "source ~/.bashrc; cd ~/main/ && perl -Ilib myapp")'