Как я могу сохранить control + d от отключения моего сеанса?

26

Я регулярно сш к центос 5 коробка. Каким-то образом их ключи отображаются так, что control+dя выйду из моей текущей оболочки. Если меня судят по другому назначению, это возвращает меня к предыдущему пользователю. Если я не лишен права, это просто разъединяет меня. Как я могу предотвратить это? Я регулярно использую control + d для отмены из интерпретатора Python, и иногда я случайно нажимаю на него несколько раз.

УХО
источник
в csh, вы делаетеset ignoreeof
Тревор Бойд Смит

Ответы:

32

Вы ищете IGNOREEOFпеременную среды, если вы используете bash:

IGNOREEOF

Управляет действием интерактивной оболочки при получении символа EOF в качестве единственного ввода. Если установлено, значение - это количество последовательных символов EOF, которые должны быть введены как первые символы в строке ввода перед выходом bash. Если переменная существует, но не имеет числового значения или не имеет значения, значением по умолчанию является 10. Если она не существует, EOF обозначает конец ввода в оболочку.

Итак, export IGNOREEOF=42вам придется нажать Ctrl+Dсорок два раза, прежде чем он действительно выйдет из вашей оболочки.

У POSIX setтоже есть -o ignoreeofнастройка. Так что сверьтесь с документацией вашей оболочки, чтобы узнать, есть ли у вашей оболочки это (и должно), и проверить ее точную семантику.

Мат
источник
Хорошо, выдает сообщение «Использовать выход, чтобы покинуть оболочку», по крайней мере, в Ubuntu. Будучи вовлеченным в пользователя, вы, вероятно, не захотите непреднамеренно оставить его, особенно если родительский пользователь является корневым пользователем.
Fiasco Labs
1
Я лично нахожу это действительно раздражающим, таким образом я не устанавливаю это нигде. Об этом узнал, пытаясь отключить это поведение :)
Mat
2
Я не могу удержаться от педантизма. IGNOREEOFколичество раз, когда EOF игнорируется, прежде чем, наконец, его принять. Так что в приведенном выше примере, если вы export IGNOREEOF=42, вам нужно будет нажать CONTROL-D 43 раза, чтобы выйти, а не 42.
Элвин Томпсон,
2

тсч set ignoreeofили set ignoreeof=<any value not 1>работает

codesoar
источник
0

Если вам действительно не нравится иметь Ctrl-d, тогда вы можете удалить eofсимвол в элементах управления терминала.

stty eof undef

После этого Cntl-dбудет любой другой управляющий персонаж.

Arcege
источник
1
Я только что попробовал это в терминале (urxvt) с bash, и в простой консоли, и это не сработало.
Мат
Хм ... это раньше работало, а документы до сих пор говорят, что так и есть. Альтернативой может быть использование <kbd> Ctrl - [</ kvd>.
Arcege
2
Это также сделает его больше не выход из Python.
Псуси