$ PATH por si mesmo vs echo $ PATH

5

Quando eu digito apenas $PATH como abaixo, a saída começa com -bash: seguido pelo valor de $PATH e, no final, imprime : No such directory Considerando que a produção de echo $PATH não produz essa produção.
O readline do bash está envolvido?

[user1@Server1 ~]$ $PATH
-bash: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin: No such file or directory

Quando acabo de fazer echo $PATH , a saída é:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin
    
por Ravi Kumar 19.09.2017 / 21:37

4 respostas

11

A primeira palavra em uma linha de comando simples é um comando - uma ação. (Existem variantes mais complexas, mas, por enquanto, considerem isso uma verdade suficiente.)

No seu primeiro exemplo, o "comando" é o valor da variável $PATH , que na verdade não é um comando, então bash reclama que não pode encontrá-lo para ser executado. (O shell pesquisa a lista de diretórios separados por dois pontos especificados na variável $PATH do comando que você inseriu.)

No seu segundo exemplo, o "comando" é o verbo echo , com o valor de $PATH como argumento. O comando echo imprime seus argumentos para stdout , assim você consegue ver o valor de $PATH na tela.

    
por 19.09.2017 / 21:46
11

Se você digitar o comando

$ cat food

você receberá a mensagem de erro

cat: food: No such file or directory

Se você digitar o comando

$ cp abc def

você receberá a mensagem de erro

cp: cannot stat ‘abc’: No such file or directory

É muito muito comum para mensagens de erro no Unix & Linux para começar com o nome do programa que emitiu (ou seja, escreveu) eles. Então, quando você digita

$ abc:def

em um shell bash, é natural que a mensagem de erro

-bash: abc:def: command not found

começa com o nome bash , porque o bash emitiu essa mensagem. A parte que é um pouco complicada é que diz -bash em vez de bash . Isso ocorre porque o bash é um shell , e especificamente, um shell de login . Por convenção, os nomes dos shells de login sempre começam com - .

Para mais informações sobre isso, consulte:

por 19.09.2017 / 23:11
3

$PATH apenas avalia a variável e tenta executá-la como um comando, já que não há argumentos nem nome de comando real, então ele se queixa como: no such file or directory .

echo $PATH está fornecendo explicitamente um comando para exibir o conteúdo da variável $PATH .

    
por 19.09.2017 / 21:55
-3

Isso é equivalente a

export myvar="echo test"
$myvar

o bash expande myvar e executa o resultado da variável.

A saída, neste caso, é

test

    
por 20.09.2017 / 10:44

Tags