为什么 PATH='$PATH:/Path/to/bin' 覆盖了我的 PATH?

为什么 PATH='$PATH:/Path/to/bin' 覆盖了我的 PATH?

在命令行中,我将一个目录附加到我的 PATH 中而不导出它:

$ PATH='$PATH:/home/user/anaconda3/bin'

由于某种原因,这已经覆盖了 PATH 环境变量,但我不确定为什么会发生这种情况。上面的 PATH 仍然是一个冒号分隔的目录列表,就像它应该的那样,那么问题是什么?我通常会在 PATH 中添加一个新目录,但这次我测试了附加它,这导致了意外的结果。

现在,每当我尝试最简单的命令时,ls都会出现此错误(我期望),然后出现提示,要求我安装我键入的命令:

bash: sed: command not found...

另外,由于我没有实际导出 PATH,因此后续命令不应该继承上述 PATH 变量的环境,那么是什么导致了它发生呢?

我知道我可以打开一个新的终端窗口来修复它,但我有兴趣知道为什么会发生这种情况?

答案1

单引号抑制参数扩展。

$ foo=42
$ echo '$foo' "$foo"
$foo 42

相关内容