当我在终端中写入
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
就是这样的命令。
the
、and/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 文件路径。注意:如果您只输入其中一个目录而不输入冒号,那么您将得到不同的输出。