在 Cygwin 中,为什么 echo $PATH 有效,但 $PATH 失败?

在 Cygwin 中,为什么 echo $PATH 有效,但 $PATH 失败?

正如在这里看到的,这样做echo $PATH给了我完整的路径,但这样做只$PATH给出了一个不完整的版本,看起来它没有在某处被正确转义:

在此处输入图片描述

然而,当我查看我的配置文件时,与 PATH 相关的唯一行似乎只有:

PATH=$PATH

...在.bashrc,并且...

export PATH=usr/local/sbin:/usr/sbin:$PATH
export PATH=/sbin:$PATH
export PATH=/cygdrive/b/users/me/desktop:$PATH

...in .bash_profile。在我看来,这两种格式都正确,所以我不确定这里发生了什么。还有人能解释一下吗?

答案1

(我假设您从users/和之间删除了您的用户名/desktop。现在看起来有几个空格,但实际上那里没有空格。)

当您调用 sole 时$PATH,其中的第一个空格将bash解释为命令的内容与其第一个参数分开。No such file or directory指的是“命令”。

第一个空格在 中Program Files,因此“命令”以 结尾Program。它失败,因为没有这样的文件。

答案2

PATH 是一个变量(shell 使用它通过查看其每个目录来尝试定位程序。)

当您运行 echo $PATH 时,您将显示它的内容。

当您运行 $PATH 时,您正在尝试运行变量中包含的命令。由于这是一个目录列表,因此它不是有效的命令,因此会产生错误。

相关内容