我如何防止 tmux 使用 Ctrl-d 退出?

我如何防止 tmux 使用 Ctrl-d 退出?

我在我的服务器上使用 tmux,最近我发现 ctrl-d 将退出 tmux 并丢失所有会话信息,我本想只是结束 ssh 会话,但却没有注意到我仍然在 tmux 中,直到为时已晚。

我知道以后使用 ctrl-d 时要小心,但我想知道是否有办法防止 tmux 在意外按下 ctrl-d 时退出?提示、确认或分离等解决方案都可以。

答案1

确切地说,Ctrld不是退出tmux,而是退出 shell。如果该 shell 在会话中最后一个窗口的唯一窗格中运行tmux,则会话结束,tmux客户端退出。

为了防止Ctrld退出 shell,您可以设置IGNOREEOFshell 变量,或者设置ignoreeofshell 选项。将以下内容之一放入您的.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+绑定D到:detach

bind-key -n C-d detach

-n意味着不需要先前的转义序列,例如 tmux 前缀。

答案3

除了切普纳斯回答你可以通过设置为eof来完全停止终端发送EOF :undefstty

stty eof undef

重置方式:

stty eof '^d'

相关内容