Was bedeutet $ PATH?

28

Ich versuche etwas zu installieren und unter den Schritten war dieser:

"Legen Sie es auf Ihre $PATH"

Was bedeutet das? Was ist das?

Ich habe sowohl diese Site als auch Google durchsucht, aber jeder hält es für selbstverständlich!

Adam
quelle
2
@muru Nein, ich habe diese Frage gelesen und sie hat nichts mit meiner gemeinsam. Auch diese Frage war überhaupt nicht hilfreich.
Adam
4
@muru Ich denke, es geht nicht darum, wie man etwas hinzufügt (oder ich verstehe falsch, was mit "Platziere es auf deinem $ PATH" gemeint ist).
Jacob Vlijm
1
@JacobVlijm du hast recht es ist nicht.
Adam
2
Aha. In Ordung. Verbunden; askubuntu.com/q/141718/158442
muru

Antworten:

24

In einem Terminal ausführen:

echo $PATH

oder

printf "%s\n" "$PATH"

Was Sie sehen, ist eine Liste von Verzeichnissen, die wie folgt aussehen:

/home/jacob/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Wenn Sie eine ausführbare Datei in eines dieser Verzeichnisse stellen, müssen Sie den Pfad zur ausführbaren Datei / zum Skript nicht festlegen, sondern können sie anhand ihres Namens als Befehl ausführen.

Ausführbare Dateien in $PATHsollten laut Konvention keine Spracherweiterung haben (obwohl sie funktionieren würden)

Bearbeiten Sie Ihre $ PATH-Variable

Sie können ein Verzeichnis (dauerhaft) hinzufügen, $PATHindem Sie der ~/.profileDatei die folgende Zeile hinzufügen (standardmäßig nicht sichtbar, drücken Sie Ctrl+ Him Dateimanager, um es sichtbar zu machen):

export PATH=$PATH:/path/to/dir

Nützlichere Informationen zu Umgebungsvariablen

(wie $PATH) findet ihr hier (danke für die Vorschläge @Letizia)

Jacob Vlijm
quelle
wir können vorschlagen, wie man es in .bashrc PATH = $ PATH ändert: / path / you / want oder in .profile, was denkst du?
Lety
und dies ist ein nützlicher Link für Anfänger
Lety
@Letizia Ich würde den ersten vorziehen. Haben Sie Ihre Antwort entfernt? wir waren so ziemlich gleichzeitig. Wir hätten eine
schöne
Ja, ich habe es bereits getan, meine Antwort wurde entfernt und ich dachte, das ist besser, um Ihren Beitrag zu leisten. Was denkst du über meinen Kommentar?
Lety
@ Letizia Kommentar = perfekt, ich werde bearbeiten. Vielen Dank!
Jacob Vlijm
6

$PATHist eine dateispeicherortbezogene Umgebungsvariable .

Wenn Sie einen auszuführenden Befehl eingeben, sucht das System in den von angegebenen Verzeichnissen PATHin der angegebenen Reihenfolge.

Sie können die angegebenen Verzeichnisse anzeigen, indem Sie echo $PATHim Terminal eingeben .

Angenommen, es ist eine ausführbare Datei foobar01.shvorhanden, /home/user/foo1/foo2/foobar01.shdie Sie regelmäßig ausführen möchten. Das Eingeben des gesamten "Pfades" wäre zeitaufwändig. Also fügen wir das Verzeichnis der $PATHVariablen hinzu und können es foobar.shdirekt ausführen, ohne den Pfad anzugeben.

Sie können es hinzufügen, $PATHindem Sie den folgenden Befehl eingeben

export PATH=$PATH:/home/user/foo1/foo2

astrob0t
quelle
2

Ich gehe davon aus, dass Sie aus einem Windows-Hintergrund stammen (entschuldige mich, wenn dies nicht der Fall ist). In Laienbegriffen ist ein Pfad (oder der Suchpfad) die Liste der Verzeichnisse, die nach allem durchsucht werden, was Sie in der Befehlszeile eingeben. Wenn Sie einen integrierten Befehl wie ls eingeben, wird nach einer angegebenen Liste von Verzeichnissen gesucht. Sie können Ihren Pfad nachschlagen, indem Sie echo $ PATH eingeben. Hier ist ein Unterschied zwischen Windows und * nix: Standardmäßig sucht Windows immer nach der ausführbaren Datei im aktuellen Verzeichnis. Wenn Sie beispielsweise eine Datei mit dem Namen uptime.bat in c: \ myscripts haben und Sie c: \ myscripts cd eingeben, wird sie ausgeführt. In * nix wird jedoch der Pfad abgefragt und die ausführbare Datei gefunden (falls verfügbar).

Wenn Sie Ihre Skripte in einem Verzeichnis namens / home / teresa / scripts speichern, müssen Sie den vollständigen Pfad zu diesem Verzeichnis angeben, um diese Skripte auszuführen. Beispiel: / hone / teresa / checkHost. Eine Variation wäre cd / home / teresa und geben Sie dann ./checkHost ein (beachten Sie das ./, was bedeutet, dass Sie die Datei explizit auffordern, im aktuellen Verzeichnis ausgeführt zu werden.

Um dies zu vermeiden, können Sie einfach eingeben

Exportieren Sie PATH = $ PATH: / home / teresa / scripts

Dies bedeutet, dass zusätzlich zu dem bereits vorhandenen Pfad auch in / hone / teresa / scripts gesucht wird. Das Problem dabei ist jedoch, dass diese Einstellung nach dem Abmelden nicht mehr angezeigt wird. Bearbeiten Sie also die versteckte Datei ~ / .bashrc, suchen Sie dort die PATH-Zeile und hängen Sie sie entsprechend an. Ich gehe davon aus, dass Sie Bash verwenden. Bei anderen Shells unterscheiden sich Syntax und Datei.

Als neuer Benutzer ist es sehr verlockend zu haben. im Suchpfad, was im Grunde bedeutet, dass auch im aktuellen Verzeichnis gesucht wird. Dies wird jedoch aus Gründen, die an anderer Stelle erörtert wurden, nicht als gute Praxis angesehen.

HTH

Hopfender Hase
quelle