“ $-”中的“ s”是什么?


10

我通常很了解的内容$-。在最近的CentOS上,我得到:

[grochmal@orion ~]$ echo $-
himBH

hmBH是的所有选项set,这i意味着我的外壳是交互式的。

但是,在Arch Linux上,我得到了:

[grochmal@haps ~]$ echo $-
himBHs

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

Answers:


13

-s选项是bash start调用,带有-s,表示“来自“ standard in”的源命令。

-s如果存在-s选项,或者在选项处理后没有剩余参数,那么将从标准输入中读取命令。此选项允许在调用交互式外壳程序时设置位置参数。

测试非常容易:

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

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

$ b32sh -li
$ echo $-
himBH

但是它在bash 4.4中:

$ b44sh -li
$ echo $-
himBHs

第二部分说明了为什么我要在Arch上使用它。我的CentOS值为BASH_VERSION4.2.46(1)-发布,而在Arch上为4.4.5(1)-发布。
grochmal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.