Ho questa linea nel mio .bashrc
e vorrei sapere cosa significa esattamente questo
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Ho questa linea nel mio .bashrc
e vorrei sapere cosa significa esattamente questo
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Risposte:
$-
significa "flag correnti".echo $-
restituisce "himBH". Sono tutti valori predefiniti.[[ $- != *i* ]] && return
realtà fa quello che dice sopra in un commento: controlla se il flag interattivo è impostato. Il [[e]] lo rendono un valore booleano quindi finisce in un "vero" o "falso". "false && return" lo fa andare su "true && return" lo fa eseguire il ritorno.I flag predefiniti sono spiegati in modo più dettagliato:
h sta per "hash all": questo dice a bash di ricordare le posizioni dei comandi che ha trovato interrogando il tuo PERCORSO.
sto per "interattivo": inserire input e recuperare output.
m sta per "monitor": abilita il controllo del lavoro
B sta per "parentesi graffa espandibile". Ciò consente di utilizzare l'espansione del controvento
H sta per "espansione della storia". Questo è ciò che ti consente di rieseguire un comando dalla tua cronologia precedendo il suo numero con un punto esclamativo
A proposito. Io ho ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Fondamentalmente fa lo stesso ma presumo più facile da leggere.
Fondamentalmente significa "Se i flag di shell non contengono una i minuscola, interrompere qui la funzione / script".
[[ ]]
denota un'espressione condizionale in bash
$-
indica i flag di shell. Conterrà "i" se la shell è interattiva (es. Puoi digitare i comandi, al contrario, sta eseguendo uno script)
!=
significa semplicemente "non uguale a".
*i*
è un modello jolly che corrisponde a tutto ciò che contiene "i"
return
senza argomenti significa semplicemente interrompere l'esecuzione della funzione o dello script corrente.
&&
è l' operatore logico AND . L'espressione a destra, in questo caso return
, verrà valutata (eseguita) solo se l'espressione a sinistra è vera . Quindi in molti linguaggi di programmazione, a && b
è una scorciatoia per if a then b
- questo si chiama "valutazione di cortocircuito" e fa impazzire gli insegnanti di programmazione quando lo usi: D
Suppongo che sia come dice: se bash non è aperto in una shell interattiva, allora non fare nulla.
Non conosco l'intera funzione, ma probabilmente ci sono comandi e flag impostati sotto quella linea nel caso tu abbia bash aperto in un TTY.
$-
e*i*
e come scoprire se il suo modo interattivo o no