Was macht die Export-PATH-Zeile in .bashrc?

9

Ich bin nicht so in Linux und ich habe die folgenden Zweifel nach einem Tutorial.

Ich muss die bashrcDatei ändern . Welche Einstellungen sind in dieser Datei enthalten? Ich denke, etwas hat mit der Bash-Shell-Umgebung zu tun, bin mir aber nicht so sicher.

Ich muss diese Zeile einfügen:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

Was genau macht diese Linie?

Ich denke, diese exportAnweisung wird verwendet, um eine neue Variable zu erstellen, die sie für andere Programme verfügbar macht.

Aber was genau macht diese Linie? Ist PATHder Name der Variablen, die ich definiere? Was ist $HOME?

Was bedeutet das :Symbol zwischen PATH=$HOME/.local/binund $HOME/.local/usr/binund $PATHAbschnitt im vorherigen Ausdruck?

Was genau bedeutet dieser Ausdruck?

AndreaNobili
quelle
Das: zwischen den Elementen ist das Trennzeichen für jedes Segment. Ohne sie wäre Ihr Weg ein kontinuierlicher Lauf und würde nicht funktionieren.
Terrance
In Ubuntu werden diese PATHÄnderungen bereits in der ~/.profileDatei vorgenommen, daher ist es etwas inkonsistent, ähnliche Dinge in der Datei vorzunehmen ~/.bashrc. Besser IMO, um den bereits vorhandenen Code ~/.profilebei Bedarf zu ändern . Derzeit enthält die Standarddatei ~/.profilediese Zeile:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson
@GunnarHjalmarsson: Es gibt einige Situationen, die .profile und .bashrc unterschiedlich machen. Die Datei .profile wird von Login-Shells und nicht von Subshells analysiert. Da Sie sich jedoch trotzdem anmelden müssen, um eine Subshell zu starten, ist dies in Ordnung, da Subshells $ PATH erben. Die .bashrc-Datei wird nicht von der Anmeldeshell analysiert, sondern von Subshells. Der Unterschied kommt, wenn Sie einige Dinge haben, die keine Kinder von Login-Shells sind (vielleicht ein ausgefallenes Automatisierungsskript, das andere Skripte wie git commit hook aufruft) - alles in .profile wird nicht gelesen, so dass sie ignoriert werden
slebetman
@slebetman: Richtig, und im Fall eines Desktop es ein weiterer Unterschied ist , die Sie nicht erwähnen: Im Gegensatz zu ~/.bashrc, ~/.profilewird vom Display - Manager stammt, so dass nur die Variablen durch ~/.profilestehen zur Verfügung , wenn Sie Programme aus der grafischen Umgebung starten. Und das passiert früh, also sollte es für automatisch gestartete Prozesse für die Sitzung in Ordnung sein.
Gunnar Hjalmarsson

Antworten:

16

Um alles in dieser Frage zusammenzufassen:

Der exportTeil

Die exportZeile bedeutet, dass die Variable, die Sie deklarieren, für untergeordnete Prozesse zugänglich ist. Mit anderen Worten, Prozesse können exportüber die Shell-Umgebung auf die nach dem Schlüsselwort deklarierte Variable zugreifen . Wenn Sie also so etwas getan export FOO="BAR"und dann die Änderungen in Ihrer Shell-Umgebung vorgenommen haben, können Sie tippen $FOOund abrufen BAR.

Der PATHTeil

Die Pfadlinie ist genau so, wie Sie angegeben haben: Sie deklariert eine Variable, die nach PATHder Shell-Umgebung benannt ist. Hat in der Bash-Umgebung PATHeinen besonderen Zweck zu definieren, wo der Computer nach Programmen sucht. Auf diese Weise können Sie benutzerdefinierte Befehle für Skripte eingeben, ohne das vollständige Verzeichnis einzugeben. Beachten Sie, dass PATH standardmäßig für den Export markiert ist, sodass diese Zeile nicht neu geschrieben werden muss. Es tut aber nicht weh.

Die $HOMEin der PATHVariablen

Am Anfang des Pfads, der der PATHVariablen zugewiesen ist, $HOMEwird deklariert. Dies bedeutet, dass der Computer den darin gespeicherten Wert so gut wie erfasst HOMEund beim Lesen vor den Rest der Zeile kopiert und einfügt.

Das :dazwischen zwischen beiden Pfaden

Das :entspricht einem Komma in Sätzen. Es trennt nur die drei Verzeichnisse. Ohne diese drei Verzeichnisse würde die Konsole die empfangenen Befehle nicht erkennen. Diese drei Stellen sind die drei Verzeichnisse, die am häufigsten zum Speichern von Skripten / Befehlsdateien verwendet werden und daher für das Terminal zugänglich sein sollten, ohne den vollständigen Pfad zur Datei ausschreiben zu müssen.

Die ungeraden
quelle
Gute Antwort! "Die Exportzeile bedeutet, dass die Variable, die Sie deklarieren, nachdem sie für untergeordnete Prozesse zugänglich ist". Ist das übergeordnete Element für diese untergeordneten Prozesse das Terminal, von dem aus ich einen Befehl ausführen werde?
Vadasambar
5

Die PATHVariable gibt bash Auskunft darüber, wo nach ausführbaren Programmen gesucht werden muss. Wenn Sie also ein Skript oder eine andere ausführbare Datei haben $HOME/.local/bin, können Sie diese Änderung durch Ändern PATHeingeben und ausführen, genau wie Sie es mit lsoder tun df.

exportbedeutet nur, diese PATHVariable auch für andere Programme verfügbar zu machen, die Sie mit bash ausführen.

Was : , es ist nur ein Separator für jedes Verzeichnis. Es ist dasselbe wie ein Komma in einer Liste von Wörtern, nichts weiter.

Sergiy Kolodyazhnyy
quelle