回答:
正確にCtrldは、exit 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プレフィックスのように、事前のエスケープシーケンスが不要であることを意味します。
IGNOREOFzshを使用しているため、以前は機能しませんでした。setopt ignoreeofで.zshrc動作します。しかし、tmuxをsourceにするには、すべてのtmuxセッションを強制終了する必要がありました.zshrc。たぶん、.zshrctmux内から調達できたかもしれません...-
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遊んでいるときにtmux内でzshを再起動する方法を教えてくれました
set-environment -g 'IGNOREEOF' 2して.tmux.conf、今私は出口へCTRL-Dを3回ヒットする必要があると私はまた、メッセージとするたびに警告しています:Use "logout" to leave the shell.