gro*_*mal 11 bash shell-builtin
我通常很清楚$-
. 在最近的 CentOS 上,我得到:
[grochmal@orion ~]$ echo $-
himBH
Run Code Online (Sandbox Code Playgroud)
hmBH
都是来自set
, 的选项,i
意味着我的 shell 是交互式的。
然而,在我的 Arch Linux 上,我得到了:
[grochmal@haps ~]$ echo $-
himBHs
Run Code Online (Sandbox Code Playgroud)
我找不到任何有用的东西man bash
并set -s
给我一个错误。那s
代表什么?
ImH*_*ere 14
该-s
选择是在bash开始呼叫用-s
,标准‘这意味着“从源命令’从手册:
-s 如果存在 -s 选项,或者在选项处理后没有剩余参数,则从标准输入读取命令。此选项允许在调用交互式 shell 时设置位置参数。
测试非常简单:
$ bash -c 'echo $-'
hBc
$ bash -sc 'echo $-'
hBcs
Run Code Online (Sandbox Code Playgroud)
默认情况下,为所有以前的 bash 版本启动新 shell 不会设置该选项:
$ b32sh -li
$ echo $-
himBH
Run Code Online (Sandbox Code Playgroud)
但它在 bash 4.4 中:
$ b44sh -li
$ echo $-
himBHs
Run Code Online (Sandbox Code Playgroud)