我在我的伺服器上使用 tmux,最近我發現 ctrl-d 會退出 tmux 並丟失所有會話信息,我的目的是簡單地結束 ssh 會話,但沒有註意到我仍然在 tmux 中,直到為時已晚。
我知道以後使用 ctrl-d 時應該小心,但我想知道是否有辦法防止 tmux 在意外按下 ctrl-d 時退出?諸如提示、確認或分離之類的解決方案就可以了。
答案1
準確的說,Ctrld不是 exit 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
不適合我,所以我只是將Ctrl+綁定D到detach
.tmux.conf 中:
bind-key -n C-d detach
這-n
意味著不需要事先轉義序列,如 tmux 前綴。
答案3
除了切普納的回答你可以透過設定eof
來完全阻止終端發送 EOF :undef
stty
stty eof undef
重置為:
stty eof '^d'