$PATH 本身与 echo $PATH

RKA*_*RKA 10 bash

当我$PATH像下面那样输入时,输出开始, -bash:然后是$PATHthen的值,最后它打印,: No such directory 而输出echo $PATH不产生该输出。
是否readline涉及bash ?

[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
Run Code Online (Sandbox Code Playgroud)

当我只做echo $PATH输出时:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user1/.local/bin:/home/user1/bin
Run Code Online (Sandbox Code Playgroud)

roa*_*ima 14

简单命令行上的第一个词是命令 - 一个动作。(还有更复杂的变体,但现在认为这是一个充分的事实。)

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

在您的第二个示例中,“命令”是echo动词,其值是$PATH作为参数。该echo命令将其参数打印到stdout,因此您可以$PATH在屏幕上看到 的值。

  • @RaviKumar `-bash` 标识报告错误的进程。`bash` 前面的 `-` 是 shell 表示“我是登录 shell”的常用方式。 (2认同)

G-M*_*ca' 13

如果你输入命令

$ cat food
Run Code Online (Sandbox Code Playgroud)

你会收到错误信息

cat: food: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果你输入命令

$ cp abc def
Run Code Online (Sandbox Code Playgroud)

你会收到错误信息

cp: cannot stat ‘abc’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这是非常非常UNIX中的错误消息共同点?&?Linux可以与该程序的名称开始发出(即写)他们。所以,当你输入

$ abc:def
Run Code Online (Sandbox Code Playgroud)

进入 bash shell,错误消息很自然

-bash: abc:def: command not found
Run Code Online (Sandbox Code Playgroud)

以 name 开头bash,因为 bash 发出了该消息。有点棘手的一个部分是它说-bash而不是bash. 这是因为 bash 是一个shell 特别是一个登录 shell  按照惯例,登录 shell 的名称始终以-.

有关这方面的更多背景信息,请参阅: