Esse arquivo ou diretório não existe depois de digitar $ PATH no terminal

13

quando escrevo no terminal

echo $PATH

minha saída é

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

mas quando escrevo apenas:

$PATH

essa saída eu não entendi direito, a saída é:

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

e minha pergunta é: por que ele escreveu "Esse arquivo ou diretório não existe?" Todo diretório da variável PATH existe.

wair92
fonte

Respostas:

20

$PATHé uma variável da qual tenho certeza. Quando essa variável é resolvida, seria o mesmo que digitar :/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:e esperar que algo acontecesse. O motivo echo $PATHé que você está explicitamente direcionando para a tela em vez de dizer ao terminal para "fazer" $PATH.

Daniel Park
fonte
2

Caso você ainda não obtenha as outras respostas, é o mesmo:

$ 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

A primeira palavra de cada linha de comando deve ser um comandoechoé esse comando.  the,, and/ore :/home/bo/bin:/usr/local/bin:/usr/sbin…não são. E, aparentemente, quando você digita uma linha de comando que começa com uma palavra que não é um comando, o bash diz No such file or directoryse a palavra contém um ou mais /caracteres e command not foundse não.

G-Man diz que 'restabelece Monica'
fonte
1

Digitando

$ PATH

você está realmente fazendo nada além de expandir seu conteúdo na linha de comando:

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

e este não é um comando válido, levando legitimamente à mensagem que você está recebendo.

O que você esperava que apenas a digitação $PATHfizesse?

miroxlav
fonte
Eu acho que a expectativa que $PATHessencialmente imprimiria a variável na tela sem tentar executá-la, no entanto, esse não é o caso.
iDrwish 15/02/19
0

No Linux, o terminal está esperando por um command$ PATH não é um comando, é um variable.

Quando você escreve, echo $PATHestá perguntando o conteúdo da variável e com o comando echomostrando na tela.

jcbermu
fonte
0

A variável $PATHcontém vários diretórios separados por dois pontos. O shell espera um arquivo executável ou outro comando (por exemplo, um comando interno do shell, como cd) como entrada. Comandos como lse catsão apenas executáveis ​​localizados em um dos diretórios $ PATH. Vários diretórios encadeados por dois pontos geralmente não formam um caminho de arquivo UNIX adequado. Aviso: se você inserir apenas um dos diretórios sem dois pontos, obterá uma saída diferente.

jkd
fonte