
estou seguindoeste tutorialpara criar scripts de criação de janelas tmux.
tmux new-window t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp'
às vezes eu mato myapp depois de iniciar o tmux, quero voltar para um shell nesse diretório, mas em vez disso, isso mata a janela completamente. Qual o melhor jeito de consertar isso? Acho que pelo menos uma resposta envolve executar um shell e fazer com que ele execute comandos, mas não tenho certeza da melhor maneira de fazer isso.
Responder1
tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp; $SHELL'
irá iniciar seu shell padrão quando os comandos anteriores terminarem (independentemente do valor de retorno, ou seja, mesmo que você não os tenha matado).
Se você quiser apenas ir para o shell se o perl
processo for encerrado ou falhar (e fechar a janela do tmux se tiver sucesso), use
tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp || $SHELL'
Responder2
tmux
já abre um shell para você no qual executa os comandos cd
e perl
. Se você não quer correroutroshell abaixo disso, apenas para continuar uma sessão interativa (ou evitar que a janela feche, sem usar set-remain-on-exit
), você pode fazer:
tmux new-window -t $SESSION:0 -k -n MAIN
tmux send-keys 'cd ~/main/ && perl -Ilib myapp' C-m
Se você quiser outro shell no tmux
shell ' criado e quiser que esse shell execute os comandos e se torne interativo (o que é diferente da resposta @n.st que executa o shell posteriormente), você pode fazer:
tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "cd ~/main/ && perl -Ilib myapp")'
e se for um problema que bash
tenha um ambiente incompleto faça algo como:
tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "source ~/.bashrc; cd ~/main/ && perl -Ilib myapp")'