Brak takiego pliku lub katalogu po wpisaniu $ PATH w terminalu

13

kiedy piszę w terminalu

echo $PATH

moja produkcja to

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

ale kiedy piszę tylko:

$PATH

to wyjście nie rozumiem dobrze, wyjście to:

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

a moje pytanie brzmi: dlaczego napisał „Nie ma takiego pliku lub katalogu?” istnieje każdy katalog ze zmiennej PATH.

wair92
źródło

Odpowiedzi:

20

$PATHto zmienna, której jestem pewien. Gdy ta zmienna zostanie rozwiązana, będzie to samo, co wpisanie :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:i oczekiwanie, że coś się wydarzy. Powodem tego echo $PATHjest to, że jawnie wysyłasz go na ekran, a nie mówisz terminalowi, aby „zrobił” $PATH.

Daniel Park
źródło
2

Jeśli nadal nie otrzymujesz odpowiedzi na inne odpowiedzi, jest to to samo:

$ 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

Pierwszym słowem każdego wiersza poleceń musi być polecenieechoto takie polecenie.  the, and/ori :/home/bo/bin:/usr/local/bin:/usr/sbin…nie są. I najwyraźniej, gdy wpiszesz wiersz poleceń rozpoczynający się od słowa, które nie jest poleceniem, bash mówi, No such file or directoryczy słowo zawiera jeden lub więcej /znaków, a command not foundjeśli nie.

G-Man mówi „Przywróć Monikę”
źródło
1

Pisząc

ŚCIEŻKA $

w rzeczywistości nie robisz nic poza rozszerzaniem jego zawartości w wierszu poleceń:

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

i nie jest to prawidłowe polecenie, które zgodnie z prawem prowadzi do otrzymywanej wiadomości.

Czego się spodziewałeś, że wystarczy tylko pisanie na klawiaturze $PATH?

miroxlav
źródło
Wydaje mi się, że oczekiwanie, $PATHktóre zasadniczo wydrukowałoby zmienną na ekranie bez próby jej wykonania, jednak tak nie jest.
iDrwish,
0

W Linuksie terminal czeka na command, $ PATH nie jest poleceniem, jest variable.

Kiedy piszesz echo $PATH, pytasz o zawartość zmiennej, a polecenie echowyświetla się na ekranie.

jcbermu
źródło
0

Zmienna $PATHzawiera wiele katalogów oddzielonych dwukropkami. Powłoka oczekuje jako pliku cdwejściowego pliku wykonywalnego lub innego polecenia (np. Polecenia wbudowanego w powłokę ). Polecenia takie jak lsi catto tylko pliki wykonywalne znajdujące się w jednym z katalogów $ PATH. Wiele katalogów połączonych ze sobą dwukropkami na ogół nie tworzy właściwej ścieżki pliku UNIX. Uwaga: jeśli wpiszesz tylko jeden katalog bez dwukropka, uzyskasz inny wynik.

jkd
źródło