Nessun file o directory dopo aver digitato $ PATH nel terminale


13

quando scrivo nel terminale

echo $PATH

la mia uscita è

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

ma quando scrivo solo:

$PATH

questo output non capisco bene, l'output è:

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

e la mia domanda è: perché ha scritto "Nessun file o directory del genere?" esiste ogni directory dalla variabile PATH.

Risposte:


20

$PATHè una variabile di cui sono sicuro che tu sia a conoscenza. Una volta risolta quella variabile, sarebbe la stessa cosa che digitare :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:e aspettarsi che succeda qualcosa. Il motivo echo $PATHfunziona perché stai esplicitamente eseguendo il piping sul display anziché dire al terminale di "fare" $PATH.


2

Nel caso in cui non riesci ancora a ottenerlo dalle altre risposte, è lo stesso di questo:

$ 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

La prima parola di ogni riga di comando deve essere un comandoechoè un tale comando.  the, and/ore :/home/bo/bin:/usr/local/bin:/usr/sbin…non lo sono. E, a quanto pare, quando si digita una riga di comando che inizia con una parola che non è un comando, bash dice No such file or directoryse la parola contiene uno o più /caratteri e command not foundse non lo fa.


1

Digitando

$ PATH

in realtà non stai facendo altro che espandere il suo contenuto dalla riga di comando:

: / Home / bo / bin: / usr / local / bin: / usr / sbin: / usr / local / sbin: / usr / bin: / sbin: / bin

e questo non è un comando valido, che porta legittimamente al messaggio che stai ricevendo.

Cosa ti aspettavi che $PATHfacesse solo la digitazione ?


Immagino che l'aspettativa che $PATHessenzialmente stamperebbe la variabile sullo schermo senza tentare di eseguirla, tuttavia, non è così.
iDrwish,

0

Su Linux il terminale è in attesa di a command, $ PATH non è un comando, è a variable.

Quando scrivi echo $PATHstai chiedendo il contenuto della variabile e con il comando echoche lo mostra sullo schermo.


0

La variabile $PATHcontiene più directory separate da due punti. La shell si aspetta un file eseguibile o un altro comando (ad es. Un comando incorporato della shell, come cd) come input. Comandi come lse catsono solo eseguibili situati in una delle directory $ PATH. Più directory concatenate da due punti generalmente non formano un percorso file UNIX corretto. Avviso: se si immette solo una delle directory senza i due punti, si ottiene un output diverso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.