답변:
정확하게 말하면 Ctrld종료하지 않고 tmux
껍질입니다. 해당 쉘이 tmux
세션 에서 마지막 창의 유일한 분할 창에서 실행중인 경우 세션이 종료되고 tmux
클라이언트가 종료됩니다.
Ctrld쉘이 종료 되지 않도록 IGNOREEOF
쉘 변수를 설정하거나 ignoreeof
쉘 옵션을 설정할 수 있습니다. .bashrc
파일에 다음 중 하나를 넣으십시오 .
IGNOREEOF=10 # Shell only exists after the 10th consecutive Ctrl-d
set -o ignoreeof # Same as setting IGNOREEOF=10
IGNOREEOF
나를 위해 작동하지 않았으므로 .tmux.conf에서 Ctrl+ D에 바인딩 detach
했습니다.
bind-key -n C-d detach
이는 -n
tmux 접두사와 같이 사전 이스케이프 시퀀스가 필요하지 않음을 의미합니다.
IGNOREOF
zsh를 사용하고 있기 때문에 이전에는 작동하지 않았습니다. setopt ignoreeof
에서 .zshrc
작동합니다. 그러나 나는 tmux가 소스를 얻기 위해 모든 tmux 세션을 죽여야했다 .zshrc
. 어쩌면 내가 .zshrc
tmux 내 에서 소스 를 제공 할 수 있습니다 ...
cat > some_new_file.txt
.
^D
있습니다.
bind -n C-d if-shell -b 'USHELL="$(basename "$(getent passwd $USER | cut -d: -f7)")"; [ $(tmux list-windows | wc -l) -eq 1 -a $(tmux list-panes | wc -l) -eq 1 -a $(pstree $PPID | egrep "\\b$USHELL\$" | grep -o $USHELL | wc -l) -eq 1 ]' detach 'send C-d'
exec zsh
나는 .zshrc와 함께 연주하고있을 때 TMUX 내 zsh을 다시 시작
set-environment -g 'IGNOREEOF' 2
에.tmux.conf
지금은 출구에 Ctrl-D를 3 회를 칠 필요하고 또한 메시지와 함께 각각의 시간을 경고하고있다 :Use "logout" to leave the shell.