shell 环境变量的 MacOS 导出被转义或误解

MacOS export of env var is being escaped or misinterpreted on shell

Mac OS 这里。在终端上,我创建了以下 .env 文件:

export FIZZ=foo
export BUZZ="a$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO"

然后我 运行 source .env && echo $FIZZ 我看到:

foo

到目前为止,还不错。但是现在我 运行 echo $BUZZ 并且输出是:

a0.pQJ4oYWP.m4qdRKRQlyO

我明确将 BUZZ 的值用双引号 ("a$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO") 括起来,那么为什么它输出为 "a0.pQJ4oYWP.m4qdRKRQlyO"

我能够重现你所看到的。我很确定您对 bash 所做的环境变量替换有疑问。 (由“$”字符触发。)我知道有两种方法可以“修复”它。

一种是使用前面的反斜杠转义“$”字符。 export BUZZ=$2a$10$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO

另一个是改变你引用字符串的方式。使用单引号而不是双引号... export BUZZ='a$Hk1PB6Eyf5Pu71JLfH6fCexjzOIwkctk.pQJ4oYWP.m4qdRKRQlyO'.

双引号允许环境变量替换继续,单引号防止这种情况发生。