我通常很清楚 的内容$-
。在最近的 CentOS 上我得到:
[grochmal@orion ~]$ echo $-
himBH
hmBH
都是来自 的选项set
,并且i
意味着我的 shell 是交互式的。
然而,在我的 Arch Linux 上我得到了:
[grochmal@haps ~]$ echo $-
himBHs
我找不到任何有用的东西man bash
并set -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