Was ist $PATH
?
Wie kann ich Befehle / Programme haben, die nur für mich verfügbar sind?
Ich habe diesen bereits ~/bin
erwähnten Pfad gesehen , aber wofür wird er verwendet und wie verwende ich ihn?
environment-variables
Braiam
quelle
quelle
Antworten:
$ PATH ist eine Umgebungsvariable, die zum Nachschlagen von Befehlen verwendet wird. Das ~ ist Ihr Ausgangsverzeichnis, also ist ~ / bin / home / user / bin; Es ist ein normales Verzeichnis.
Wenn Sie beispielsweise "ls" in einer Shell ausführen, führen Sie tatsächlich das Programm / bin / ls aus. Der genaue Speicherort kann je nach Systemkonfiguration abweichen. Dies geschieht, weil sich / bin in Ihrem $ PATH befindet.
So können Sie den Pfad anzeigen und feststellen, wo sich ein bestimmter Befehl befindet:
Um Ihr eigenes privates bin-Verzeichnis zu haben, müssen Sie es nur zum Pfad hinzufügen. Bearbeiten Sie dazu ~ / .profile (eine versteckte Datei), um die folgenden Zeilen einzuschließen. Wenn die Zeilen kommentiert sind, müssen Sie sie nur auskommentieren. wenn sie schon da sind, bist du fertig!
Jetzt müssen Sie Ihr ~ / bin-Verzeichnis erstellen. Da .profile bei der Anmeldung ausgeführt wird und nur ~ / bin hinzufügt, wenn es zu diesem Zeitpunkt vorhanden ist, müssen Sie sich erneut anmelden, um den aktualisierten PFAD anzuzeigen.
Lass es uns testen:
quelle
type
sehen, wie ein tatsächlicher Befehl von der Shell aufgelöst wird. Beispiel:which echo
undtype echo
meldet verschiedene Dinge,which
gibt '/ bin / echo' zurück, aber 'type' gibt zurück, dass es sich um eine eingebaute Shell handelt, die die Shell der Datei in '/ bin' vorziehen wird.which
wird besser durchtype
odercommand
in interaktiven Shells ersetzt und ist in Skripten völlig nutzlos.$HOME
Variable in$PATH
aus irgendeinem Grund funktioniert nicht, dh man muss~
stattdessen Zeichen verwenden.In Bezug auf
~/bin
und Befehle / Programme nur für Ihren Benutzer verfügbarNeuere Ubuntu-Versionen enthalten das
~/bin
Verzeichnis in Ihrem Verzeichnis$PATH
, jedoch nur, wenn das~/bin
Verzeichnis vorhanden ist.Wenn es nicht existiert:
Stellen Sie sicher, dass Ihre
~/.profile
folgende Zeilengruppe enthält (die Standardeinstellung ist~/.profile
bereits vorhanden):Erstellen Sie das
~/bin
Verzeichnis:Starten Sie Ihren Computer neu oder erzwingen Sie das erneute Lesen von Bash
~/.profile
:quelle
exec -l bash
" -Tipp. Was macht die-l
Flagge? Ich finde keine Erklärung inman exec
.exec -l
wird bash als Login-Shell ausführen [ wiki.bash-hackers.org/commands/builtin/exec] . Kurz gesagt, es zwingt Bash, neu zu lesen/etc/profile
und~/.profile
. Nur ausgeführtexec bash
wird nur neu gelesen~/.bashrc
.