如何防止Control + D断开会话连接?


26

我定期将其放到centos 5盒中。它们的键以某种方式被映射,这样control+d将使我退出当前的shell。如果我被另一种使用感到厌恶,它将使我回到以前的用户。如果我不被接受,那将使我与世隔绝。我怎样才能避免这种情况发生?我经常使用control + d取消python解释器,有时我不小心按下了不止一次。


在中csh,您可以set ignoreeof
特雷弗·博伊德·史密斯

Answers:


32

IGNOREEOF如果要使用,您正在寻找环境变量bash

IGNOREEOF

在收到EOF字符作为唯一输入时,控制交互式外壳的操作。如果设置,则该值是连续的EOF字符数,必须在bash退出之前将其作为输入行上的第一个字符键入。如果变量存在但没有数字值或没有值,则默认值为10。如果变量不存在,则EOF表示输入到Shell的末尾。

因此export IGNOREEOF=42,您必须先按Ctrl+D四十二次才能真正退出外壳。

POSIX set也有一个-o ignoreeof设置。因此,请查阅您外壳程序的文档,以查看您的外壳程序是否具有此功能(并应该),并检查其确切的语义。


不错,至少在Ubuntu上会显示“使用出口退出外壳”消息。被用户吸引,您可能不想无意中离开它,尤其是如果父用户是root级。
Fiasco Labs

1
我个人觉得这很烦人,所以我没有在任何地方设置它。在尝试禁用该行为的同时发现了这些问题:)
Mat

2
我无法抗拒成为学徒。IGNOREEOF是EOF在最终接受之前被忽略的次数。因此,在上面的示例中,如果您是export IGNOREEOF=42,则需要按CONTROL-D 43次以退出(而不是42
。– Alvin Thompson

2

tcsh set ignoreeofset ignoreeof=<any value not 1>工作


0

如果您确实不喜欢使用Ctrl-d,则可以eof在终端控件中删除该字符。

stty eof undef

此后,Cntl-d将是任何其他控制字符。


1
我只是在带有bash的终端(urxvt)和普通控制台中尝试过,但没有用。

嗯...以前可以工作,文档仍然说可以。另一种选择是使用<kbd> Ctrl-[</ kvd>。
Arcege 2011年

2
这也将使其不再从python退出。
psusi 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.