29

Я использую tmux на своем сервере, и недавно я обнаружил, что ctrl-d выйдет из tmux и потеряет всю информацию о сеансе. Я намеревался просто завершить сеанс ssh, но не заметил, что я все еще в tmux, пока не слишком поздно.

Я знаю, что я должен быть осторожен в будущем при использовании ctrl-d, но мне было интересно, есть ли способ предотвратить выход tmux при случайном нажатии ctrl-d? Такое решение, как подсказка, подтверждение или отключение, подойдет.

3 ответа3

33

Если быть точным, Ctrl d не выходит из tmux , а скорее из оболочки. Если эта оболочка работает на единственной панели последнего окна в сеансе tmux , сеанс заканчивается и клиент tmux завершает работу.

Чтобы предотвратить выход Ctrl d из оболочки, вы можете установить переменную оболочки IGNOREEOF или установить ignoreeof shell. Поместите одно из следующего в ваш файл .bashrc :

IGNOREEOF=10   # Shell only exists after the 10th consecutive Ctrl-d

set -o ignoreeof  # Same as setting IGNOREEOF=10
11

IGNOREEOF не работает для меня, поэтому я просто связал Ctrl+D, чтобы detach в .tmux.conf:

bind-key -n C-d detach

Параметр -n означает, что предварительная escape-последовательность не требуется, например префикс tmux.

5

Помимо ответа Чепнера, вы можете запретить терминалу отправлять EOF полностью, установив для eof undef с помощью команды stty:

stty eof undef

Сброс с:

stty eof '^d'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .