Ctrl D 在采购 bashrc 后不退出 bash

May*_*ulC 4 bash bashrc

bashrc不是我写的,和来源有很多不同的配置文件。采购它后,我不能再用Ctrl+退出 bash D

我发现了这个关于 zsh 的相关问题,我想知道用于对 bash 执行相同操作的机制。

在登录 shell 中键入Ctrl+D时,我得到:

使用“注销”离开外壳。

在非登录 shell 中时,

使用“exit”离开外壳。

由于这些消息根据使用的语言环境进行翻译,因此这可能不是系统脚本。如果可能,我想独立控制两者(例如,为非登录 shell 禁用此功能)。那可能吗?

isc*_*iad 9

如果设置了 bash 变量或 shell 选项,请查看您的配置:

Bash 变量

(Bash 参考手册中的第 5.2 节

IGNOREEOF

控制外壳在接收到作为唯一输入的 EOF 字符时的操作。如果设置,该值表示在 shell 退出之前可以作为输入行第一个字符读取的连续 EOF 字符数。如果变量存在但没有数字值(或没有值),则默认值为 10。如果该变量不存在,则 EOF 表示对 shell 的输入结束。这仅对交互式 shell 有效。

例如 IGNOREEOF=2


修改 Shell 行为:Set 内置

set 允许您更改 shell 选项的值

(Bash 参考手册中的第 4.3.1 节

-o ignoreeof

读取 EOF 时,交互式 shell 不会退出。


回答你的问题

如果可能,我想独立控制两者(例如,为非登录 shell 禁用此功能)。那可能吗?

是的。您获取的脚本应该检查 shell 是否是登录 shell并相应地设置变量,如下所示:

if shopt -q login_shell; then IGNOREEOF=10; else IGNOREEOF=0; fi
Run Code Online (Sandbox Code Playgroud)

请注意,10仍然允许您使用Ctrl+离开外壳D;你只需要连续画 11 下就可以了。