2015-07-01 68 views
29

我正在安装liquidprompt,并在文档中要求您在.bashrc中添加[[ $- = *i* ]] && source ~/liquidprompt/liquidprompt

我想了解该行的第一部分,但对像我这样的bash中的noob很难。如果有人有一个很好的文档或答案...

+0

另外值得一读:[?这是壳牌互动](http://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html)和[如何在bash中检查shell是否以交互模式运行?](http://serverfault.com/a/146747/200076) – fedorqui

回答

52

$-包含当前shell选项。

[[ ... ]]中,如果没有引用,=的右侧将被解释为模式。因此,*i*意味着i可能在任何事情之前或之后。

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

+3

由liquidprompt维护者本人(在手册中编写该指令的人员)批准。 – dolmen

+0

优秀的解释! – math2001

13

它正在检查shell $-的选项是否包含i。该i是用于交互式

Bash man page

一种交互式外壳是一个没有非选项参数和 开始,而不需要-c选项,其标准输入和错误都连接到 终端(如由isatty(3)确定),或者以-i 选项开始。 PS1被设置,$ - 包括我如果bash是交互式的,允许 shell脚本或启动文件来测试这种状态。

Also relevant

+2

由液体维护人员亲自批准(谁在手册中编写了该指令)。 – dolmen