sha*_*ant 7 bash shell-builtin set
我通过键入 查找了 shell 内置命令集help set,简短的语法说明显示:
设置 [-abefhkmnptuvxBCHP] [-o 选项名称] [--] [arg ...]
帮助文档解释说,变量 $- 保存使用 set 命令设置的所有当前参数。
所以,我确实echo $-显示了 shell 的所有参数设置,我的是:
他BH
文档和上面的简短语法描述中提到了所有字母,但缺少一个:i选项。i setbash中的参数是什么意思?
Ste*_*itt 11
在i那里意味着shell是交互的。
这在讨论 shell 交互情况的联机帮助页部分中进行了描述:
交互式 shell 是一个没有非选项参数启动并且没有
-c标准输入和错误都连接到终端(由 确定isatty(3))的-i选项,或者一个以选项启动。PS1设置并$-包括iifbash是交互式的,允许 shell 脚本或启动文件测试此状态。
shell 的交互性是在初始化时确定的,它的效果在 shell 的生命周期内不会改变;这就是为什么set不报告i为可以更改的标志的原因。在 Bash 4.3 版中,set -i或被set +i接受,但除了在forced_interactive内部更改标志之外没有任何影响(并且该标志仅在初始化期间读取)。在 4.4 版中,它们会产生错误消息。您可以flags.c在 Bash 源代码中查看标志处理的详细信息。