Ctrl-d で tmux が終了しないようにするにはどうすればよいですか?

Ctrl-d で tmux が終了しないようにするにはどうすればよいですか?

私はサーバー上で tmux を使用していますが、最近、ctrl-d で tmux が終了し、すべてのセッション情報が失われることがわかりました。私の意図は単に ssh セッションを終了することだったのですが、手遅れになるまでまだ tmux が残っていることに気づきませんでした。

今後 ctrl-d を使用するときは注意する必要があることは承知していますが、誤って ctrl-d を押したときに tmux が終了しないようにする方法があるかどうか疑問に思っています。プロンプト、確認、またはデタッチなどの解決策で問題ありません。

答え1

正確に言うと、 は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

答え2

IGNOREEOF私の場合はうまくいかなかったので、.tmux.conf で+ をCtrlバインドしました:Ddetach

bind-key -n C-d detach

これは-n、tmux プレフィックスのように、事前のエスケープ シーケンスが必要ないことを意味します。

答え3

その上チェプナーズ回答をeofに設定することで、端末が EOF を送信するのを完全に停止できます。undefstty

stty eof undef

リセットするには:

stty eof '^d'

関連情報