环境变量在 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
}%