当我如下键入时$PATH
,输出以 开头, 然后是打印末尾-bash:
的 then 值 ,而 的输出不会产生该输出。 bash参与其中了吗?$PATH
: No such directory
echo $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
的值。$PATH
该echo
命令将其参数打印到标准输出$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 并执行变量的结果。
这种情况下的输出是
测试