Ich habe diese Zeile in meinem .bashrc
und ich würde gerne wissen, was genau das bedeutet
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
quelle
Ich habe diese Zeile in meinem .bashrc
und ich würde gerne wissen, was genau das bedeutet
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
$-
bedeutet "aktuelle Flags".echo $-
gibt "himBH" zurück. Das sind alles Vorgaben.[[ $- != *i* ]] && return
tut tatsächlich das, was es oben in einem Kommentar sagt: es prüft, ob das interaktive Flag gesetzt ist. Die [[und]] machen es zu einem Booleschen Wert, so dass es zu einem "wahren" oder "falschen" Wert führt. "false && return" bewirkt, dass es weitergeht. "true && return" bewirkt, dass es die Rückgabe ausführt.Die Standard-Flags werden genauer erklärt:
h steht für "hash all": Dies weist bash an, sich die Positionen der Befehle zu merken, die es bei der Abfrage Ihres PFADS gefunden hat.
Ich bin für "interaktiv": Eingabe & Ausgabe zurück.
m steht für "monitor": Dies ermöglicht die Auftragssteuerung
B steht für "Klammer erweitern". Auf diese Weise können Sie die Klammererweiterung verwenden
H steht für "history expand". Auf diese Weise können Sie einen Befehl aus Ihrem Verlauf erneut ausführen, indem Sie seiner Nummer ein Ausrufezeichen voranstellen
Apropos. Ich habe ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Grundsätzlich funktioniert das selbe aber besser lesbar nehme ich an.
Grundsätzlich bedeutet dies "Wenn die Shell-Flags kein i in Kleinbuchstaben enthalten, stoppen Sie die Funktion / das Skript hier".
[[ ]]
bezeichnet einen bedingten Ausdruck in bash
$-
bedeutet die Shell-Flags. Es wird "i" enthalten, wenn die Shell interaktiv ist (dh Sie können Befehle eingeben, anstatt ein Skript auszuführen).
!=
bedeutet einfach "ungleich".
*i*
ist ein Platzhalter-Muster, das mit allem übereinstimmt, was "i" enthält.
return
Ohne Argumente bedeutet dies nur, dass die Ausführung der aktuellen Funktion oder des aktuellen Skripts angehalten wird.
&&
ist der logische UND- Operator. Der rechte Ausdruck wird in diesem Fall return
nur ausgewertet (ausgeführt), wenn der linke Ausdruck wahr ist . In vielen Programmiersprachen a && b
ist dies eine Abkürzung für if a then b
- dies wird als "Kurzschlussbewertung" bezeichnet und macht Programmierlehrer verrückt, wenn Sie sie verwenden: D
Ich würde annehmen, dass es so aussieht, als würde es heißen: Wenn bash in einer interaktiven Shell nicht geöffnet ist, dann tue nichts.
Ich kenne die ganze Funktion nicht, aber es gibt wahrscheinlich Befehle und Flags, die unterhalb dieser Zeile gesetzt sind, falls Sie in einem TTY eine Bash geöffnet haben.
$-
und*i*
wie es herausfindet, ob sein interaktiver Modus oder nicht