在终端中输入 $PATH 后没有找到该文件或目录

在终端中输入 $PATH 后没有找到该文件或目录

当我在终端中写入

echo $PATH

我的输出是

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

但当我只写:

$PATH

这个输出我理解的不太对,输出是:

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

我的问题是,为什么它会显示“没有这样的文件或目录?” PATH 变量中的每个目录都存在。

答案1

$PATH是一个变量,我相信您知道这一点。解析该变量后,它就和输入:/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:并期望发生某事一样了。之所以echo $PATH有效,是因为您明确地将其输出到显示器,而不是告诉终端“执行” $PATH

答案2

如果你仍然没有从其他答案中明白,那么它与此相同:

$ 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

每个命令行的第一个字必须是命令echo就是这样的命令。  theand/or:/home/bo/bin:/usr/local/bin:/usr/sbin…不是。 显然,当您输入以非命令单词开头的命令行时,bash 会判断No such file or directory该单词是否包含一个或多个/字符,command not found如果不包含,则判断。

答案3

通过输入

$PATH

实际上,你只是在命令行上扩展其内容:

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

这不是一个有效的命令,它不会合法地导致您收到该消息。

您期望仅通过打字$PATH就能做什么?

答案4

该变量$PATH包含多个目录,这些目录用冒号分隔。shell 期望可执行文件或其他命令(例如,shell 内置命令,如cd)作为输入。诸如ls和之类的命令cat只是位于 $PATH 目录之一中的可执行文件。用冒号连接在一起的多个目录通常不构成正确的 UNIX 文件路径。注意:如果您只输入其中一个目录而不输入冒号,那么您将得到不同的输出。

相关内容