Ich habe dies zu meinem .bash_profil hinzugefügt, habe es aber versäumt, es zu kennzeichnen, und habe vergessen, was es genau bedeutet

4

Ich erinnere mich weitgehend, was es tut, aber nicht speziell:

    if [ -f ~/.bashrc ]; then
    source ~/.bashrc
    fi

Was ist der genaue Zweck dafür nochmal?

user52470
quelle

Antworten:

4

Diese Quellen a ~/.bashrc Datei, falls vorhanden, und lädt den Inhalt dieser Datei.

Die kurze Antwort auf Ihre Frage lautet: Sie haben dies getan, unabhängig davon, wie Sie zu Ihrem Computer gelangen, über eine Shell, die in einer interaktiven Desktopsitzung geöffnet wurde, oder über eine SSH-Anmeldung am Computer bash Shell hat ein konsistentes Setup.

Die längere Antwort, warum Sie es auf diese Weise tun mussten, liegt unten ...

Der Grund, warum Sie dies tun möchten, liegt im Bash-Verlauf: Eine dieser Dateien wird für interaktive Anmeldungen verwendet, die andere für nicht interaktive Anmeldungen. Der Gedanke, der hinter zwei verschiedenen Setups steckt, ist, dass Sie möglicherweise einige Dinge in Ihrer interaktiven Shell haben möchten (eine ausgefallene Eingabeaufforderung, eine Nachricht des Tages, die Verfärbung Ihrer Befehlsausgabe usw.), die Sie in einer nicht interaktiven Sitzung nicht möchten es löst programmgesteuerten Zugriff auf Ein- und Ausgabe aus und was nicht.

Für die meisten Benutzer möchten Sie jedoch, dass beide Umgebungen gleich sind. Die meisten von uns führen nicht so komplizierte Bash-Setups aus, dass es gerechtfertigt ist, interaktive und nicht interaktive Setups wie diese zu trennen.

Das .bash_profile wird für Login-Shells ausgeführt, während .bashrc wird für interaktive Shells ohne Anmeldung ausgeführt.

Da ist es Ein schöner Artikel von Josh Staiger, der darüber spricht, warum man sich überlegt und wie man sich daran erinnert, wo man Dinge ablegt . Gestatten Sie mir, hier einen Teil davon zu zitieren:

Was ist eine Login- oder Nicht-Login-Shell?

Wenn Sie sich über die Konsole anmelden (Benutzername und Kennwort eingeben), entweder am Computer oder remote über ssh: .bash_profile wird ausgeführt, um Ihre Shell vor der ersten Eingabeaufforderung zu konfigurieren.   Wenn Sie sich jedoch bereits bei Ihrem Computer angemeldet haben und ein neues Terminalfenster öffnen ( xterm ) also in Gnome oder KDE .bashrc wird vor der Eingabeaufforderung des Fensters ausgeführt. .bashrc wird auch ausgeführt, wenn Sie eine neue Bash-Instanz durch Eingabe starten /bin/bash in einem Terminal.

Mac OS X - eine Ausnahme

Eine Ausnahme zu den Richtlinien für Terminalfenster ist Mac OS X Terminal.app, die standardmäßig für jedes neue Terminalfenster eine Anmeldeshell ausführt und aufruft .bash_profile anstatt .bashrc. Andere GUI-Terminalemulatoren tun möglicherweise dasselbe, die meisten neigen jedoch dazu, dies nicht zu tun.

Empfehlung

In den meisten Fällen möchten Sie nicht zwei separate Konfigurationsdateien für Anmelde- und Nicht-Anmelde-Shells verwalten. Wenn Sie einen PFAD festlegen, soll dieser auf beide angewendet werden. Sie können dies durch Beschaffung beheben .bashrc von deiner .bash_profile Datei, und legen Sie dann den Pfad und die allgemeinen Einstellungen in .bashrc.

Fügen Sie dazu die folgenden Zeilen zu .bash_profile hinzu:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

Jetzt, wenn Sie sich von einer Konsole auf Ihrem Computer anmelden .bashrc wird angerufen werden.

Ian C.
quelle
0

Siehe Ian Cs Beschreibung der Funktion der Quellzeile

Dies ist von einer if-Anweisung umgeben

if x; then
  ....
fi

Dies überprüft x und führt dann den Code zwischen then und fi aus. (Die Idee, fi und if durch Umkehren des Schlüsselworts beggining zu beenden, wird in sh und verwandten Shells verwendet.

Die Überprüfung, die hier vorgenommen wird, ist [ -f ~/.bashrc ] das ist das gleiche wie test -f .bashrc Das if weist den Test an, true zurückzugeben, wenn das Folgende zutrifft: -f ist eine Datei und existiert.

Der Code über sagt also, ob es eine .bashrc-Datei gibt, die in Ihre aktuelle Shell ausgeführt wird.

Mark
quelle