Ho questa linea nel mio .bashrce vorrei sapere cosa significa esattamente questo
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Ho questa linea nel mio .bashrce 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* ]] && returnrealtà 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