在终端中输入$ PATH后没有这样的文件或目录


13

当我在终端上写

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变量中的每个目录都存在。

Answers:


20

$PATH是一个变量,我确定您知道。解析该变量后,它将与键入:/home/bo/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/usr/bin:/sbin:/bin:并期望发生某些事情一样。之所以echo $PATH起作用,是因为您是将其显式地传递到显示器上,而不是告诉终端“ do” $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是否包含一个或多个字符。


1

通过键入

$ PATH

您实际上除了在命令行上扩展其内容外,什么也没有做:

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

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

您期望仅键入$PATH会做什么?


我猜想实际上$PATH会在不尝试执行变量的情况下将变量打印到屏幕上,但是事实并非如此。
iDrwish

0

在Linux上,终端正在等待a command,$ PATH不是命令,是a variable

在编写时,echo $PATH您要询问变量的内容,并echo在屏幕上显示该命令。


0

该变量$PATH包含用冒号分隔的多个目录。外壳程序希望将可执行文件或其他命令(例如外壳程序内置命令,例如cd)作为输入。lscat等命令只是位于$ PATH目录之一中的可执行文件。由冒号链接在一起的多个目录通常不能形成正确的UNIX文件路径。注意:如果仅输入其中一个目录而不包含冒号,则将获得不同的输出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.