环境变量在 iTerm / 终端中从 .env 中被引用
Environment variable gets quoted in iTerm / terminal from .env
我有一个这样的 .env
文件:
SOME_SECRET="84158be5-a644-4cd9-9350-5ec24efc67e9"
现在我正在安装 dotenv
:
npm install -g dotenv-cli
当在 iTerm2 中 运行 dotenv -p SOME_SECRET
时,我得到这个输出:
dotenv -p SOME_SECRET
"84158be5-a644-4cd9-9350-5ec24efc67e9"
在 VS Code 终端中执行相同操作时,我得到以下输出:
dotenv -p SOME_SECRET
84158be5-a644-4cd9-9350-5ec24efc67e9
VS 代码输出(不带引号)是预期的。
在另一台机器(也包括 macOS Big Sur)上尝试相同的操作,iTerm 输出与 VS Code 中的输出相同。
回到第一台机器,当 运行 macOS 终端时,它显示与 iTerm2 相同的行为 - 所以我猜它似乎与 zsh
设置有关。另一方面,根据屏幕截图在 VS Code 中将终端更改为“外部”时,它仍然显示预期的输出:
什么可能导致此行为?
已解决:我的 .zshrc
确实包含此条目:
source ~/.dotenv.sh
~/dotenv.sh
有这个内容:
cd()
{
debug()
{
if [ $DOTENVSH_DEBUG = true ]; then
echo
fi
}
loadenv()
{
debug "Loading "
for i in $(cat ); do
export $i
done
}
builtin cd $@
ERR=$?
if [ $ERR -ne 0 ]; then; return $ERR; fi
if [ -e .env ]; then
loadenv .env
fi
}%
我有一个这样的 .env
文件:
SOME_SECRET="84158be5-a644-4cd9-9350-5ec24efc67e9"
现在我正在安装 dotenv
:
npm install -g dotenv-cli
当在 iTerm2 中 运行 dotenv -p SOME_SECRET
时,我得到这个输出:
dotenv -p SOME_SECRET
"84158be5-a644-4cd9-9350-5ec24efc67e9"
在 VS Code 终端中执行相同操作时,我得到以下输出:
dotenv -p SOME_SECRET
84158be5-a644-4cd9-9350-5ec24efc67e9
VS 代码输出(不带引号)是预期的。
在另一台机器(也包括 macOS Big Sur)上尝试相同的操作,iTerm 输出与 VS Code 中的输出相同。
回到第一台机器,当 运行 macOS 终端时,它显示与 iTerm2 相同的行为 - 所以我猜它似乎与 zsh
设置有关。另一方面,根据屏幕截图在 VS Code 中将终端更改为“外部”时,它仍然显示预期的输出:
什么可能导致此行为?
已解决:我的 .zshrc
确实包含此条目:
source ~/.dotenv.sh
~/dotenv.sh
有这个内容:
cd()
{
debug()
{
if [ $DOTENVSH_DEBUG = true ]; then
echo
fi
}
loadenv()
{
debug "Loading "
for i in $(cat ); do
export $i
done
}
builtin cd $@
ERR=$?
if [ $ERR -ne 0 ]; then; return $ERR; fi
if [ -e .env ]; then
loadenv .env
fi
}%