bash环境变量$中的字符是什么意思?

时间:2013-08-09 12:16:01

标签: linux bash

我一直在查看一些随各种Linux发行版一起提供的.bashrc和.profile脚本,并且看到有时他们会检查$-

这是Ubuntu中的一个

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

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

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

# echo $-
himBH

其他标志/选项是什么意思?某处有完整的清单吗?

2 个答案:

答案 0 :(得分:14)

来自man bash

  

-

     

扩展为调用时指定的当前选项标志,set builtin命令或shell本身设置的那些(例如-i选项)。

因此,这些是控制shell行为的当前选项。特别是:

  • h:在$PATH中缓存二进制文件的位置。加快执行速度,但如果在shell会话期间移动二进制文件,则会失败。
  • i:当前的shell是交互式的
  • mJob control已启用
  • BBrace expansion已启用
  • HHistory substitution,如!-1

答案 1 :(得分:1)

他们意味着各种各样的事情。每个字母对应一个为bash设置的选项。例如,“i”表示shell是交互式的(因此您提供的代码示例是测试它是否是交互式shell)。

bash手册页中提供了完整列表。寻找“集合” - 这是第一行:

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