“$-”里面的“s”是什么?

“$-”里面的“s”是什么?

我通常很清楚 的内容$-。在最近的 CentOS 上我得到:

[grochmal@orion ~]$ echo $-
himBH

hmBH都是来自 的选项set,并且i意味着我的 shell 是交互式的。

然而,在我的 Arch Linux 上我得到了:

[grochmal@haps ~]$ echo $-
himBHs

我找不到任何有用的东西man bashset -s给我一个错误。这s代表什么?

答案1

-s选项是 bash start 调用-s,意思是“来自“标准输入”的源命令。来自手册:

-s 如果存在 -s 选项,或者选项处理后没有剩余参数,则从标准输入读取命令。该选项允许在调用交互式 shell 时设置位置参数。

测试起来非常简单:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

默认情况下,为所有以前的 bash 版本启动新 shell 不会设置该选项:

$ b32sh -li
$ echo $-
himBH

但它是在 bash 4.4 中:

$ b44sh -li
$ echo $-
himBHs

相关内容