私はサーバー上で 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 を送信するのを完全に停止できます。undef
stty
stty eof undef
リセットするには:
stty eof '^d'