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'
.
双引号允许环境变量替换继续,单引号防止这种情况发生。
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'
.
双引号允许环境变量替换继续,单引号防止这种情况发生。