我有一个.env包含环境变量的文件,例如:
TZ=UTC
NODE_ENV=development
Run Code Online (Sandbox Code Playgroud)
然后,在我的 Bash 脚本中,我使用:
set -o allexport; source .env; set +o allexport
Run Code Online (Sandbox Code Playgroud)
这会加载所有环境变量.env。
但是,如果我手动将环境变量传递给脚本,它们会被source. 例如,如果我运行NODE_ENV=production ./script.sh,我希望它保留NODE_ENV=production而不是使用NODE_ENV=developmentfrom .env。我怎么能这样做呢?
我正在使用 Ubuntu 20
Kam*_*Cuk 13
存储环境“供以后使用”,获取文件,然后恢复环境。
curenv=$(declare -p -x)
source .env
eval "$curenv"
Run Code Online (Sandbox Code Playgroud)
我不认为是这样。但您可以按如下方式修改 .env 文件以防止其覆盖NODE_ENV。
TZ=UTC
NODE_ENV=${NODE_ENV:-development}
Run Code Online (Sandbox Code Playgroud)