$PATH 本身与 echo $PATH

$PATH 本身与 echo $PATH

当我如下键入时$PATH,输出以 开头, 然后是打印末尾-bash:的 then 值 ,而 的输出不会产生该输出。 bash参与其中了吗?$PATH: No such directoryecho $PATH
readline

[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

当我刚刚执行时echo $PATH输出是:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin

答案1

简单命令行上的第一个词是命令 - 操作。 (还有更复杂的变体,但目前认为这是一个足够的事实。)

在您的第一个示例中,“命令”是变量的值$PATH,它实际上不是命令,因此bash抱怨它找不到要运行的命令。 (shell 在变量中指定的$PATH以冒号分隔的目录列表中搜索您输入的命令。)

在第二个示例中,“命令”是动词,其参数为echo的值。$PATHecho命令将其参数打印到标准输出$PATH,这样您就可以在屏幕上看到 的值。

答案2

如果您输入命令

$ cat food

你会收到错误消息

cat: food: No such file or directory

如果您输入命令

$ cp abc def

你会收到错误消息

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

这是很非常Unix 和 Linux 中的错误消息通常以发出(即编写)它们的程序的名称开头。所以,当你输入

$ abc:def

进入 bash shell,很自然地会出现错误消息

-bash: abc:def: command not found

以 name 开头bash,因为 bash 发出了该消息。有点棘手的部分是它说的-bash是而不是bash.发生这种情况是因为 bash 是, 具体来说,一个登录外壳  按照约定,登录 shell 的名称始终以-

有关此内容的更多背景信息,请参阅:

答案3

$PATH只是评估变量并尝试将其作为命令运行,因为没有参数也没有实际的命令名称,然后它抱怨为:no such file or directory

echo $PATH显式给出命令来显示$PATH变量的内容。

答案4

这相当于

export myvar="echo test"
$myvar

bash 扩展 myvar 并执行变量的结果。

这种情况下的输出是

测试

相关内容