我在我的服务器上使用 tmux,最近我发现 ctrl-d 将退出 tmux 并丢失所有会话信息,我本想只是结束 ssh 会话,但却没有注意到我仍然在 tmux 中,直到为时已晚。
我知道以后使用 ctrl-d 时要小心,但我想知道是否有办法防止 tmux 在意外按下 ctrl-d 时退出?提示、确认或分离等解决方案都可以。
答案1
确切地说,Ctrld不是退出tmux
,而是退出 shell。如果该 shell 在会话中最后一个窗口的唯一窗格中运行tmux
,则会话结束,tmux
客户端退出。
为了防止Ctrld退出 shell,您可以设置IGNOREEOF
shell 变量,或者设置ignoreeof
shell 选项。将以下内容之一放入您的.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 :undef
stty
stty eof undef
重置方式:
stty eof '^d'