tmux 스크립트를 작성하여 시작된 명령을 종료한 후 어떻게 쉘에 들어가나요?

tmux 스크립트를 작성하여 시작된 명령을 종료한 후 어떻게 쉘에 들어가나요?

나는 후속 조치를 취하고 있다이 튜토리얼tmux 창 생성을 작성하기 위한 스크립트입니다.

tmux new-window t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp'

때때로 tmux를 시작한 후 myapp을 종료하고 해당 디렉토리의 셸로 돌아가고 싶지만 이로 인해 창이 완전히 종료됩니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 적어도 하나의 대답에는 셸을 실행하고 해당 셸에서 명령을 실행하는 것이 포함되어 있다고 생각하지만 이를 수행하는 가장 좋은 방법은 잘 모르겠습니다.

답변1

tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp; $SHELL'

기본 셸은 이전 명령이 종료되면 시작됩니다(반환 값에 관계없이, 즉 해당 명령을 종료하지 않은 경우에도 마찬가지).

perl프로세스가 종료되거나 실패할 때만 쉘에 들어가고 싶다면 (그리고 성공 시 tmux 창을 닫으려면) 다음을 사용하십시오.

tmux new-window -t $SESSION:0 -k -n MAIN 'cd ~/main/ && perl -Ilib myapp || $SHELL'

답변2

tmuxcd명령을 실행 하고 실행할 수 있는 쉘이 열렸습니다 perl. 달리고 싶지 않다면다른해당 셸에서 대화형 세션을 계속하려면(또는 창이 사용되지 않고 닫히는 것을 방지하려면 set-remain-on-exit) 다음을 수행할 수 있습니다.

tmux new-window -t $SESSION:0 -k -n MAIN
tmux send-keys 'cd ~/main/ && perl -Ilib myapp' C-m

생성한 셸 아래에 다른 셸을 갖고 tmux해당 셸이 명령을 실행하고 대화형이 되도록 하려면(나중에 셸을 실행하는 @n.st의 답변과 달리) 다음을 수행할 수 있습니다.

tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "cd ~/main/ && perl -Ilib myapp")'

문제가 bash불완전한 환경인 경우 다음을 수행하십시오.

tmux new-window -t $SESSION:0 -k -n MAIN 'bash --init-file <(echo "source ~/.bashrc; cd ~/main/ && perl -Ilib myapp")'

관련 정보