2015-07-01 13 views
29

Sto installando liquidprompt e nella documentazione ti chiedono di aggiungere [[ $- = *i* ]] && source ~/liquidprompt/liquidprompt nel tuo .bashrc.

Sto cercando di capire la prima parte della linea ma è difficile per un noob in bash come me. Se qualcuno ha un bel documento o la risposta ...

+0

Ulteriore interessante lettura: [? E 'questa shell interattiva] (http://www.gnu.org/software/bash/manual/html_node/Is-this-Shell-Interactive_003f.html) e [Come posso verificare in bash se una shell è in esecuzione in modalità interattiva?] (http://serverfault.com/a/146747/200076) – fedorqui

risposta

52

$- contiene le opzioni della shell corrente.

In [[ ... ]], il lato destro di un = viene interpretato come un modello se non quotato. Pertanto, *i* significa i possibilmente preceduto o seguito da qualsiasi cosa.

In altre parole, verifica che l'opzione i sia presente, vale a dire se la shell corrente è interattiva.

+3

Approvata dal responsabile del trattamento dei liquidi stesso (che ha scritto tale istruzione nel manuale). – dolmen

+0

spiegazione eccellente! – math2001

13

Sta controllando se le opzioni per la shell $- contengono uno i in esse. Il i è per interattiva

Dal Bash man page:

Una shell interattiva è uno iniziato senza argomenti non opzione e senza l'opzione -c cui standard input e di errore sono entrambi collegati ai terminali (come determinato da isatty (3)), o uno iniziato con l'opzione -i . PS1 è impostato e $ - include i se bash è interattivo, consentendo a uno script di shell o un file di avvio per testare questo stato.

Also relevant

+2

Approvato dal responsabile del trattamento dei liquidi stesso (che ha scritto tale istruzione nel manuale). – dolmen