bash环境变量$-中的字符代表什么意思?

14

我一直在查看一些随各种Linux发行版附带的.bashrc和.profile脚本,并且发现有时它们会检查$-

这是Ubuntu中的一个示例:

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

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

我的当前会话显示:

# echo $-
himBH

其他标记/选项的含义是什么? 是否有一个全面的列表?


http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html - Basile Starynkevitch
你_确实_阅读了bash命令的man页面,是吗? - arkascha
2个回答

23

来自bash手册:

-

按照调用时指定的当前选项标志进行扩展,由set内置命令或 shell 本身设置的选项(如 -i 选项)。

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


谢谢您的快速回答!我可能不小心错过了它 -_-. set builtin 链接非常有帮助。 - peonicles
我现在正在查看Bash手册,我没有意识到星号是通配符哈哈 *i*,因此 himBH 满足 *i* - Andrew Kirna

1

它们表示不同的意思。每个字母都对应一个在bash中设置的选项。例如,“i”表示shell是交互式的(因此,您给出的代码示例是一个测试,以查看它是否为交互式shell)。

完整列表可以在bash man页面中找到。搜索“set” - 这是第一行:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接