So fügen Sie Ihrem $PATH unter Linux ein Verzeichnis hinzu

$PATH ist einer der stillen Manipulatoren im Hintergrund Ihres Linux-Computers. Es wirkt sich leise auf Ihre Benutzererfahrung aus, aber es ist nichts Zwielichtiges daran. Wir erklären, was es tut und wie Sie es anpassen können.

Was ist $PATH unter Linux und wie funktioniert es?

Wenn Sie einen Befehl in ein Terminalfenster eingeben und die Eingabetaste drücken, starten Sie ziemlich viel Aktivität, bevor Ihr Befehl überhaupt ausgeführt wird.

Bash ist die Standard-Shell der meisten Linux-Distributionen. Es interpretiert die von Ihnen eingegebene Textzeile und identifiziert die Befehlsnamen, die mit den Parametern, Pipes, Weiterleitungen, und was sonst noch da ist. Anschließend sucht es die ausführbaren Binärdateien für diese Befehle und startet sie mit den von Ihnen angegebenen Parametern.

Der erste Schritt, den die Shell unternimmt, um die ausführbare Datei zu finden, besteht darin, festzustellen, ob überhaupt eine Binärdatei beteiligt ist. Wenn sich der von Ihnen verwendete Befehl in der Shell selbst befindet (a „Schale eingebaut“) ist keine weitere Suche erforderlich.

Shell-Builins sind am einfachsten zu finden, da sie integraler Bestandteil der Shell sind. Es ist, als ob Sie sie in einem Werkzeuggürtel hätten – sie sind immer bei Ihnen.

Wenn Sie jedoch eines Ihrer anderen Werkzeuge benötigen, müssen Sie in der Werkstatt stöbern, um es zu finden. Ist es auf Ihrer Werkbank oder auf einem Wandhänger? Das ist, was die Umgebungsvariable $PATH tut. Es enthält eine Liste der Orte, die die Shell durchsucht, und die Reihenfolge, in der sie durchsucht werden.

Wenn Sie sehen möchten, ob ein Befehl a . ist Shell builtin, ein Alias, eine Funktion oder eine eigenständige Binärdatei mv /work/unfile, können Sie den type-Befehl wie unten gezeigt verwenden:

type clear
type cd

Der

Dies sagt uns, dass clear eine Binärdatei ist und sich die erste im Pfad gefundene unter /usr/bin befindet. Möglicherweise haben Sie mehr als eine Version von clear auf Ihrem Computer installiert, aber die Shell versucht, diese zu verwenden.

Es überrascht nicht, dass CD eine eingebaute Shell ist.

Auflisten Ihres $PFAD

Es ist leicht zu erkennen, was Ihnen im Weg steht. Geben Sie einfach Folgendes ein, um den echo-Befehl zu verwenden und drucke den Wert aus in der Variablen $PATH gehalten:

echo $PATH

Der

Die Ausgabe ist eine Liste von durch Doppelpunkte (:) getrennten Dateisystemspeicherorten. Die Shell durchsucht den Pfad von links nach rechts und überprüft jeden Speicherort des Dateisystems auf eine passende ausführbare Datei, um Ihren Befehl auszuführen.

  So führen Sie Gmail auf dem Linux-Desktop mit Wavebox aus

Wir können uns durch die Liste navigieren, um die zu durchsuchenden Dateisystemspeicherorte und die Reihenfolge anzuzeigen, in der sie durchsucht werden:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/Behälter
/usr/games
/usr/local/games
/schnappen/bin

Etwas, das möglicherweise nicht sofort offensichtlich ist, ist, dass die Suche nicht im aktuellen Arbeitsverzeichnis beginnt. Vielmehr arbeitet es sich durch die aufgelisteten Verzeichnisse und nur die aufgelisteten Verzeichnisse.

Wenn sich das aktuelle Arbeitsverzeichnis nicht in Ihrem Pfad befindet, wird es nicht durchsucht. Auch wenn Befehle in Verzeichnissen gespeichert sind, die nicht im Pfad enthalten sind, findet die Shell sie nicht.

Um dies zu demonstrieren, haben wir ein kleines Programm namens rf erstellt. Bei der Ausführung gibt rf den Namen des Verzeichnisses aus, aus dem es im Terminalfenster gestartet wurde. Es befindet sich in /usr/local/bin. Wir haben auch eine neuere Version im Verzeichnis /dave/work.

Wir geben folgenden Befehl ein um uns zu zeigen, welche Version unseres Programms Die Shell findet und verwendet:

which rf

Der

Die Shell meldet, dass die gefundene Version diejenige ist, die sich im Verzeichnis befindet, das sich im Pfad befindet.

Wir geben Folgendes ein, um es zu starten:

rf

Der

Version 1.0 von rf läuft und bestätigt, dass unsere Erwartungen richtig waren. Die gefundene und ausgeführte Version befindet sich in /usr/local/bin.

Um eine andere Version von rf auf diesem Computer auszuführen, müssen wir den Pfad zur ausführbaren Datei in der Befehlszeile verwenden, wie unten gezeigt:

./work/rf

Der

Nachdem wir der Shell jetzt mitgeteilt haben, wo die Version von rf zu finden ist, die wir ausführen möchten, verwendet sie Version 1.1. Wenn wir diese Version bevorzugen, können wir sie in das Verzeichnis /usr/local/bin kopieren und die alte überschreiben.

Nehmen wir an, wir entwickeln eine neue Version von rf. Wir müssen es häufig ausführen, während wir es entwickeln und testen, aber wir möchten keinen unveröffentlichten Entwicklungs-Build in die Live-Umgebung kopieren.

Oder vielleicht haben wir eine neue Version von rf heruntergeladen und möchten einige Verifizierungstests damit durchführen, bevor wir sie öffentlich zugänglich machen.

Wenn wir unser Arbeitsverzeichnis zum Pfad hinzufügen, veranlassen wir die Shell, unsere Version zu finden. Und diese Änderung betrifft nur uns – andere verwenden weiterhin die Version von rf in /usr/local/bin .

Hinzufügen eines Verzeichnisses zu Ihrem $PFAD

Sie können den Exportbefehl verwenden, um ein Verzeichnis hinzufügen zum $PFAD. Das Verzeichnis wird dann in die Liste der Dateisystemspeicherorte aufgenommen, die die Shell durchsucht. Wenn die Shell eine passende ausführbare Datei findet, stoppt sie die Suche. Sie sollten also sicherstellen, dass sie zuerst Ihr Verzeichnis durchsucht, bevor /usr/local/bin.

  So verwenden Sie den Bildschirmbefehl von Linux

Dies ist ganz einfach. In unserem Beispiel geben wir Folgendes ein, um unser Verzeichnis am Anfang des Pfads hinzuzufügen, damit es der erste gesuchte Ort ist:

export PATH=/home/dave/work:$PATH

Der

Dieser Befehl setzt $PATH auf das Verzeichnis, das wir hinzufügen, /home/dave/work und dann den gesamten aktuellen Pfad.

Der erste PATH hat kein Dollarzeichen ($). Wir setzen den Wert für PATH. Das letzte $PATH hat ein Dollarzeichen, weil wir auf den Inhalt verweisen, der in der PATH-Variablen gespeichert ist. Beachten Sie auch den Doppelpunkt (:) zwischen dem neuen Verzeichnis und dem Variablennamen $PATH.

Mal sehen, wie der Pfad jetzt aussieht:

echo $PATH

Der

Unser Verzeichnis /home/dave/work wird am Anfang des Pfads hinzugefügt. Der von uns bereitgestellte Doppelpunkt trennt ihn vom Rest des Pfads.

Wir geben Folgendes ein, um zu überprüfen, ob unsere Version von rf die erste ist, die gefunden wird:

which rf

Der

Der Beweis im Pudding läuft rf, wie unten gezeigt:

rf

Der

Die Shell findet Version 1.1 und führt sie von /home/dave/work aus aus.

Um unser Verzeichnis am Ende des Pfads hinzuzufügen, verschieben wir es einfach wie folgt an das Ende des Befehls:

export PATH=$PATH:/home/dave/work

Die Änderungen dauerhaft machen

Wie Beth Brooke-Marciniak sagte: „Erfolg ist gut, aber Erfolg ist flüchtig.“ Sobald Sie das Terminalfenster schließen, sind alle Änderungen, die Sie an $PATH vorgenommen haben, weg. Um sie dauerhaft zu machen, müssen Sie Ihren Exportbefehl in eine Konfigurationsdatei einfügen.

Wenn Sie den Exportbefehl in Ihre .bashrc-Datei einfügen, wird der Pfad jedes Mal festgelegt, wenn Sie ein Terminalfenster öffnen. nicht wie SSH-Sitzungen, für die Sie sich anmelden müssen, nennt man dies „interaktive“ Sitzungen.

In der Vergangenheit haben Sie den Exportbefehl in Ihre .profile-Datei eingefügt, um den Pfad für die Anmeldung bei Terminalsitzungen festzulegen.

Wir haben jedoch festgestellt, dass, wenn wir den Exportbefehl entweder in die .bashrc- oder die .profile-Datei einfügen, der Pfad sowohl für interaktive als auch für Anmeldeterminalsitzungen korrekt festgelegt wird. Ihre Erfahrung kann anders sein. Um alle Eventualitäten zu meistern, zeigen wir Ihnen in beiden Dateien, wie es geht.

Verwenden Sie den folgenden Befehl in Ihrem /home-Verzeichnis, um die .bashrc-Datei zu bearbeiten:

gedit .bashrc

Der

Der gedit-Editor wird mit geladener .bashrc-Datei geöffnet.

  So spielen Sie Spiele mit Itch.io unter Linux

Der gedit-Editor mit dem

Scrollen Sie zum Ende der Datei und fügen Sie dann den folgenden Exportbefehl hinzu, den wir zuvor verwendet haben:

export PATH=/home/dave/work:$PATH

Speicher die Datei. Schließen Sie als Nächstes entweder das Terminalfenster und öffnen Sie es erneut oder verwenden Sie den Punktbefehl, um die .bashrc-Datei wie folgt zu lesen:

. .bashrc

Geben Sie dann den folgenden echo-Befehl ein, um den Pfad zu überprüfen:

echo $PATH

Der

Dadurch wird das Verzeichnis /home/dave/work am Anfang des Pfads hinzugefügt.

Der Vorgang zum Hinzufügen des Befehls zur .profile-Datei ist der gleiche. Geben Sie den folgenden Befehl ein:

gedit .profile

Der

Der gedit-Editor wird mit geladener .profile-Datei gestartet.

Der gedit-Editor mit dem

Fügen Sie den Exportbefehl am Ende der Datei hinzu und speichern Sie ihn. Das Schließen und Öffnen eines neuen Terminalfensters reicht nicht aus, um das erneute Lesen der .profile-Datei zu erzwingen. Damit die neuen Einstellungen wirksam werden, müssen Sie sich ab- und wieder anmelden oder den Punktbefehl wie unten gezeigt verwenden:

. .profile

Den Weg für alle setzen

Um den Pfad für alle Benutzer des Systems festzulegen, können Sie die Datei /etc/profile bearbeiten.

Sie müssen sudo wie folgt verwenden:

sudo gedit /etc/profile

Wenn der gedit-Editor gestartet wird, fügen Sie den Exportbefehl am Ende der Datei hinzu.

Der gedit-Editor mit dem

Speichern und schließen Sie die Datei. Die Änderungen werden für andere wirksam, wenn sie sich das nächste Mal anmelden.

Ein Hinweis zur Sicherheit

Stellen Sie sicher, dass Sie nicht versehentlich einen führenden Doppelpunkt „:“ zum Pfad hinzufügen, wie unten gezeigt.

Der

Wenn Sie dies tun, wird zuerst das aktuelle Verzeichnis durchsucht, was ein Sicherheitsrisiko darstellt. Angenommen, Sie haben eine Archivdatei heruntergeladen und in ein Verzeichnis entpackt. Sie sehen sich die Dateien an und sehen eine weitere gezippte Datei. Sie rufen erneut unzip auf, um dieses Archiv zu entpacken.

Wenn das erste Archiv eine ausführbare Datei namens unzip enthielt, die eine bösartige ausführbare Datei war, würden Sie diese anstelle der echten ausführbaren Datei zum Entpacken versehentlich starten. Dies würde passieren, weil die Shell zuerst im aktuellen Verzeichnis suchen würde.

Seien Sie also immer vorsichtig, wenn Sie Ihre Exportbefehle eingeben. Verwenden Sie echo $PATH, um sie zu überprüfen und sicherzustellen, dass sie so sind, wie Sie sie haben möchten.