2015-07-01 72 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