bash环境variables$ – 中的字符是什么意思?

我一直在浏览各种Linux发行版附带的.bashrc和.profile脚本,并且看到有时会检查$-

这是Ubuntu中的一个

 case $- in *i*) ;; *) return;; esac 

在这种情况下,它检查“i”标志是否存在以查看当前shell是否是交互式的。

我目前的会议给了我这个:

 # echo $- himBH 

其他标志/选项是什么意思? 有什么地方有全面的清单吗?

Solutions Collecting From Web of "bash环境variables$ – 中的字符是什么意思?"

从男人bash :

通过set内建命令或由shell本身设置的那些(例如-i选项)扩展为当前选项标志。

所以这些是控制shell行为的当前选项。 尤其是:

  • h :缓存$PATH的二进制文件的位置。 加快执行速度,但如果在shell会话期间移动二进制文件则会失败。
  • i :当前的外壳是交互式的
  • m : 作业控制已启用
  • B : 支撑扩展已启用
  • H : 历史替换像!-1

他们意思是各种各样的 每个字母对应于为bash设置的选项。 例如“i”表示shell是交互式的(所以你给的代码示例是一个测试,看看它是否是一个交互式shell)。

完整列表可在bash手册页中找到。 寻找“设置” – 这是第一行:

 set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]