Warum funktioniert echo $ PATH in Cygwin, aber $ PATH schlägt fehl?

422
Hashim

Wie hier zu sehen, echo $PATHgibt mir mein vollständiger PFAD, aber das Tun $PATHgibt einfach eine unvollständige Version, die aussieht, als wäre sie nicht richtig entflogen worden:

Warum funktioniert echo $ PATH in Cygwin, aber $ PATH schlägt fehl?

Wenn ich jedoch meine Konfigurationsdateien durchsehe, scheinen die einzigen relevanten Zeilen für den PATH zu sein:

PATH=$PATH 

... in .bashrcund ...

export PATH=usr/local/sbin:/usr/sbin:$PATH export PATH=/sbin:$PATH export PATH=/cygdrive/b/users/me/desktop:$PATH 

... in .bash_profile. Beide scheinen mir richtig formatiert zu sein, daher bin ich nicht sicher, was hier vor sich geht. Kann jemand anderes etwas Licht darauf werfen?

1
Im Allgemeinen sollte das erste, was in der Befehlszeile steht, ein * Befehlsname * (gut oder eine Zuweisung) sein. $ PATH ist eine Variable, die keinen gültigen Befehlsnamen enthält. Wenn Sie `$ PATH` als Befehl ausführen, wird nicht wirklich erwartet, dass Sie etwas besonders Vernünftiges tun. Gordon Davisson vor 5 Jahren 1

2 Antworten auf die Frage

2
davidgo

PATH ist eine Variable (die von der Shell verwendet wird, um zu versuchen, Programme zu suchen, indem sie in jedem ihrer Verzeichnisse nachschaut.)

Wenn Sie echo $ PATH ausführen, wird der Inhalt angezeigt.

Wenn Sie $ PATH ausführen, versuchen Sie, den in der Variablen enthaltenen Befehl auszuführen. Da es sich hierbei um eine Liste von Verzeichnissen handelt, ist dies kein gültiger Befehl, da dies den Fehler verursacht.

2
Kamil Maciorowski

(Ich gehe davon aus, dass Sie Ihren Benutzernamen zwischen users/und gelöscht haben /desktop. Es sieht jetzt aus wie wenige Leerzeichen, aber in der Tat ist dort kein Platz.)

Wenn Sie die Sohle aufrufen $PATH, trennt das erste Leerzeichen das, was bashals Befehl interpretiert wird, vom ersten Argument. No such file or directorybezieht sich auf den "Befehl".

Das erste Leerzeichen ist in Program Files, daher endet der "Befehl" mit Program. Es schlägt fehl, weil es keine solche Datei gibt.