如何防止 control+d 断开会话?

如何防止 control+d 断开会话?

我经常通过 ssh 连接到 centos 5 机器。不知何故,它们的键被映射,这样control+d我就会退出当前的 shell。如果我被 sudo 到另一个用途,它会让我回到以前的用户。如果我没有 sudo,它只会断开我的连接。我怎样才能避免这种情况发生?我经常使用 control+d 来取消 python 解释器,有时我不小心按了不止一次。

答案1

IGNOREEOF如果您使用以下命令,则您正在寻找环境变量bash

IGNOREEOF

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

因此export IGNOREEOF=42,你必须按Ctrl+D四十二次,它才能真正离开你的壳。

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

答案2

如果您确实不喜欢Ctrl-d,那么您可以删除eof终端控件中的字符。

stty eof undef

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

答案3

tcshset ignoreeofset ignoreeof=<any value not 1>作品

答案4

错误

我遇到了类似的问题,如果我曾经Ctrl+D进行调试并且碰巧比预期多使用它一次,它会关闭整个选项卡。


使用环境变量的建议

临时(仅适用于您当前的会话):

export IGNOREEOF=20

或者

set ignoreeof=20

设置完成后,可以通过打印来检查是否已设置:

printenv

您也可以取消设置:

unset ignoreeof

永恒的:

打开、编辑并设置好环境变量,例如使用 sublime

subl ~/.bashrc或者在文件末尾subl ~/.bash_profile添加 和以永久设置环境变量。export IGNOREEOF=15要自动执行此操作,您可以在控制台中尝试以下操作:

echo "export IGNOREEOF=20" >> ~/.bash_profile

您还可以使用 echo 检查当前值,如下所示:

echo $IGNOREEOF

如果您已正确设置该值,它应该将该值打印到您的终端。如果未设置该值,它将只打印一个空行。

总结

尝试这个:

export IGNOREEOF=20 && echo "export IGNOREEOF=20" >> ~/.bash_profile

希望这有帮助,祝你有美好的一天!

相关内容