Keine solche Datei oder kein solches Verzeichnis nach Eingabe von $ PATH im Terminal

13

wenn ich im Terminal schreibe

echo $PATH

meine Ausgabe ist

:/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin

aber wenn ich nur schreibe:

$PATH

Diese Ausgabe verstehe ich nicht richtig, Ausgabe ist:

bash: :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin: No such file or directory

und meine Frage ist, warum hat es geschrieben "Keine solche Datei oder Verzeichnis?" Jedes Verzeichnis aus der PATH-Variablen existiert.

wair92
quelle

Antworten:

20

$PATHist eine Variable, die Sie sicher kennen. Wenn diese Variable aufgelöst wird, entspricht dies der Eingabe :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:und der Erwartung, dass etwas passiert. Der Grund dafür echo $PATHist, dass Sie es explizit an das Display weiterleiten, anstatt dem Terminal zu sagen, dass es "tun" soll $PATH.

Daniel Park
quelle
2

Falls Sie es aus den anderen Antworten immer noch nicht erhalten, ist es dasselbe wie folgt:

$ echo the quick brown fox
the quick brown fox
$ the quick brown fox
bash: the: command not found

$ echo and/or the black and white cats
and/or the black and white cats
$ and/or the black and white cats
bash: and/or: No such file or directory

Das erste Wort jeder Befehlszeile muss ein Befehl seinechoist so ein Befehl.  the,, and/orund :/home/bo/bin:/usr/local/bin:/usr/sbin…sind nicht. Und wenn Sie eine Befehlszeile eingeben, die mit einem Wort beginnt, das kein Befehl ist, sagt bash anscheinend, No such file or directoryob das Wort ein oder mehrere /Zeichen enthält und command not foundob dies nicht der Fall ist.

G-Man sagt "Reinstate Monica"
quelle
1

Durch Eingabe von

$ PATH

Sie tun nichts anderes, als den Inhalt über die Befehlszeile zu erweitern:

: / home / bo / bin: / usr / local / bin: / usr / sbin: / usr / local / sbin: / usr / bin: / sbin: / bin

und dies ist kein gültiger Befehl, der zu Recht zu der Nachricht führt, die Sie erhalten.

Was haben Sie erwartet, dass nur das Tippen $PATHfunktioniert?

miroxlav
quelle
Ich denke, die Erwartung, dass $PATHdie Variable im Wesentlichen auf dem Bildschirm gedruckt wird, ohne zu versuchen, sie auszuführen, ist jedoch nicht der Fall.
iDrwish
0

Unter Linux wartet das Terminal auf einen command, $ PATH ist kein Befehl, ist ein variable.

Wenn Sie schreiben echo $PATH, fragen Sie nach dem Inhalt der Variablen und mit dem Befehl echo, der ihn auf dem Bildschirm anzeigt.

jcbermu
quelle
0

Die Variable $PATHenthält mehrere durch Doppelpunkte getrennte Verzeichnisse. Die Shell erwartet eine ausführbare Datei oder einen anderen Befehl (z. B. einen integrierten Shell-Befehl wie cd) als Eingabe. Befehle wie lsund catsind nur ausführbare Dateien, die sich in einem der Verzeichnisse $ PATH befinden. Mehrere durch Doppelpunkte verkettete Verzeichnisse bilden im Allgemeinen keinen richtigen UNIX-Dateipfad. Hinweis: Wenn Sie nur eines der Verzeichnisse ohne Doppelpunkt eingeben, erhalten Sie eine andere Ausgabe.

jkd
quelle