tmux 세션의 마지막 터미널을 종료하면 다른 터미널로 전환할 수 있나요?

tmux 세션의 마지막 터미널을 종료하면 다른 터미널로 전환할 수 있나요?

tmux 세션의 마지막 터미널을 종료하면 자동으로 tmux가 닫히고 상위 터미널로 돌아갑니다. 닫는 대신 tmux를 이미 실행 중인 다른 세션으로 전환할 수 있습니까?

TRxxx, 이메일, 스크래치 등 내가 작업하는 모든 작업에 대해 새 명명된 세션을 만들고 작업 중 하나를 완료하면 각 터미널에서 종료를 실행하여 모든 터미널을 닫습니다. 세션의 마지막 터미널에서 종료를 실행하면 tmux가 상위 터미널로 돌아가지만 다시 연결할 필요가 없도록 열려 있는 다른 세션 중 하나로 전환하도록 할 수 있습니까?

이 질문은 "와 유사합니다.하나의 tmux 세션을 종료하고 다른 tmux 세션을 선택하십시오."하지만 창을 닫는 대신 종료를 사용하여 터미널을 멋지게 닫고 싶습니다.

답변1

나는 이것을 내 것에 추가했습니다 ~/.tmux.conf:

set-option -g detach-on-destroy off

세션의 마지막 셸을 삭제하면 다른 활성 세션으로 전환됩니다. 모든 세션이 종료된 후 tmux종료하세요.

답변2

내가 얻은 가장 가까운 것은 내가 작성한 tmux 함수였습니다. 나는 보통 Ctrl+를 클릭하여 셸을 종료하므로 +를 클릭하면 세션을 종료하고 전환하도록 D프로그래밍했습니다 . tmux다음을 입력하세요.[PREFIX] CtrlD.tmux.conf

bind C-d run-shell "                                        \
    if [ #{session_windows} -eq 1 ] &&                      \
       [ #{window_panes}    -eq 1 ] &&                      \
       [ #{pane_current_command}  = 'bash' ]; then          \
        if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then   \
            tmux switch-client -ln;                         \
        fi; tmux kill-session -t \"#S\";                    \
    else                                                    \
        tmux display-message \"Ignoring kill session...\";  \
    fi;                                                     \
    "

현재 세션에 다른 명령을 실행하지 않는 셸만 있는 경우 [PREFIX] Ctrl+를 눌러 현재 세션을 종료하세요. D가능하다면 다른 세션으로 전환됩니다. 저는 bash 쉘을 사용하므로 이를 사용 중인 쉘로 변경해야 할 수도 있습니다.

ps: 만약을 대비해서 저는 현재 tmux 1.9a를 사용하고 있습니다.

답변3

다음 줄을 추가 .bashrc하고 시도해 보세요.

if which tmux 2>&1 >/dev/null 
then
    # start a new session if not exist
    test -z ${TMUX} && tmux

    # when quitting tmux, try to attach to other session
    while test -z ${TMUX}; do
        tmux attach || break
    done
fi

관련 정보