Bash 变量

Bash 变量

bashrc不是我写的,它包含很多不同的配置文件。获取它后,我无法再使用Ctrl+退出 bash D

我找到了这个有关 zsh 的相关问题,我想知道使用 bash 执行相同操作的机制。

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

使用“logout”离开 shell。

在非登录 shell 中,

使用“exit”离开 shell。

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

答案1

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

Bash 变量

第 5.2 节在 Bash 参考手册中)

IGNOREEOF

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

例如IGNOREEOF=2


修改 Shell 行为:内置 Set

set允许您更改 shell 选项的值

第 4.3.1 节在 Bash 参考手册中)

-o ignoreeof

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


回答你的问题

如果可能的话,我希望独立控制两者(例如,对非登录 shell 禁用此功能)。这可能吗?

是的。你提供的脚本应该检查 shell 是否为登录 shell并相应地设置变量,如下所示:

if shopt -q login_shell; then IGNOREEOF=10; else IGNOREEOF=0; fi

注意 的值仍然允许您使用+10离开 shell ;您只需要连续敲击 11 次即可。CtrlD

相关内容