我经常通过 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 ignoreeof
或set 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
希望这有帮助,祝你有美好的一天!