Я использую tmux на своем сервере, и недавно я обнаружил, что ctrl-d выйдет из tmux и потеряет всю информацию о сеансе. Я собирался просто завершить сеанс ssh, но не заметил, что я все еще в tmux, пока не слишком поздно.
Я знаю, что в будущем я должен быть осторожен при использовании ctrl-d, но мне было интересно, есть ли способ предотвратить выход tmux при случайном нажатии ctrl-d? Такое решение, как подсказка, подтверждение или отключение, подойдет.
set-environment -g 'IGNOREEOF' 2
в.tmux.conf
и теперь мне нужно ударить Ctrl-D в 3 раза , чтобы выйти , и я также предупредил , каждый раз с сообщением:Use "logout" to leave the shell.
IGNOREEOF
у меня не сработало, поэтому я просто привязал Ctrl+ Dкdetach
.tmux.conf:bind-key -n C-d detach
В
-n
ни в коем случае перед последовательность выхода не требуется, как и tmux префикс.источник
IGNOREOF
у меня ничего не вышло, так как я использую zsh.setopt ignoreeof
в.zshrc
работах. Но мне пришлось убить все сеансы tmux для tmux к источнику.zshrc
. Может быть, я мог бы получить.zshrc
изнутри tmux ...cat > some_new_file.txt
.^D
.bind -n C-d if-shell -b 'USHELL="$(basename "$(getent passwd $USER | cut -d: -f7)")"; [ $(tmux list-windows | wc -l) -eq 1 -a $(tmux list-panes | wc -l) -eq 1 -a $(pstree $PPID | egrep "\\b$USHELL\$" | grep -o $USHELL | wc -l) -eq 1 ]' detach 'send C-d'
exec zsh
для перезапуска zsh в tmux, когда я играю с .zshrcПомимо ответа Чепнера, вы можете запретить терминалу отправлять EOF полностью, установив
eof
сundef
помощьюstty
:Сброс с:
источник