bash中的[[ $- = *i* ]]是什么意思?

44
我正在安装 liquidprompt,在文档中他们要求你在.bashrc 中添加 [[ $- = *i* ]] && source ~/liquidprompt/liquidprompt
我试图理解这行代码的第一部分,但对于像我这样的新手来说有些困难。 如果有人有一个好的文档或答案...

2个回答

71

$- 包含当前的shell选项。

[[ ... ]]中,如果右侧没有使用引号,则=右边的内容将被解释为模式。因此,*i* 表示可能在前面或后面跟着任何字符的i

换句话说,它检查 i选项是否存在,即当前shell是否为交互式。


4
经过 Liquidprompt 维护者本人的批准(他是手册中写下那些说明的人)。 - dolmen

16
它正在检查 shell 选项 $- 中是否包含 ii 代表交互式的意思。
来自 Bash man page
交互式 shell 是没有非选项参数和没有 -c 选项启动且标准输入和标准错误都连接到终端(由 isatty(3) 确定),或者使用 -i 选项启动时的 shell。如果 bash 是交互式的,则设置 PS1 并将 $- 包括 i,允许 shell 脚本或启动文件测试此状态。 同样相关

2
这是由liquidprompt维护者本人批准的(他在手册中编写了该指令)。 - dolmen

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