bash shell 中 set 命令的参数“i”是什么?

bash shell 中 set 命令的参数“i”是什么?

我通过键入 查找了 shell 内置命令集help set,简短的语法描述显示:

设置 [-abefhkmnptuvxBCHP] [-o 选项名称] [--] [arg ...]

帮助文档解释说,变量 $- 保存使用 set 命令设置的所有当前参数。

因此,我确实echo $-显示了 shell 的所有参数设置,我的是:

他BH

文档和上面的简短语法描述中提到了所有字母,但缺少一个:选项。i setbash中的参数是什么意思?

答案1

Therei表示 shell 是交互式的。

这在联机帮助页部分讨论 shell 交互的情况:

交互式 shell 是一种在没有非选项参数且没有-c选项的情况下启动的 shell,其标准输入和错误都连接到终端(由 确定 isatty(3)),或者是使用该-i选项启动的 shell。 PS1设置并$-包含i是否bash是交互式的,允许 shell 脚本或启动文件测试此状态。

shell 的交互性质是在初始化期间确定的,并且其效果在 shell 的生命周期内不会改变;这就是为什么set不报告i为可以更改的标志的原因。在 Bash 4.3 版本中,set -iset +i被接受,但除了在内部更改标志之外没有任何效果forced_interactive(并且该标志仅在初始化期间读取)。在 4.4 版本中,它们会生成一条错误消息。您可以在中查看标志处理的详细信息flags.c在 Bash 源代码中。

相关内容