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