You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Bash/Git Bash中从命令输出设置多个临时环境变量?

解决方案:直接利用eval执行Heroku的shell格式配置

你已经通过envvars=$(heroku config --shell -a heroku-app)获取了正确的shell兼容格式的配置内容,其实不需要自己手动分割键值对——Heroku的--shell参数就是专门为这个场景设计的!

只需要执行下面的命令,就能临时把这些配置设置为当前shell会话的环境变量(仅在当前会话及子进程生效,不会永久修改系统配置):

eval "$envvars"

为什么这个方法可行?

heroku config --shell的输出已经帮你处理了所有特殊情况:

  • 带空格、特殊字符的值会用单引号包裹
  • 普通字符串直接以KEY=value形式输出
  • Asia/Seoul这种带斜杠的路径也会原样保留

执行eval "$envvars"时,shell会正确解析这些语句,自动去掉多余的单引号,同时把带空格的值识别为一个整体,完全符合你的期望。

测试验证

执行完eval命令后,你可以测试各个变量:

echo $BH_SERVER          # 输出:000000000000000000
echo $DATABASE_URL       # 输出:postgres://stringno1:randomstring1@someserver.com:5432/randomstring2
echo $MUTED_SERVER       # 输出:000000000000000002, 000000000000000003
echo $TZ                 # 输出:Asia/Seoul

之后你运行的Python脚本就能直接通过os.environ.get("KEY")读取这些环境变量了,完全满足需求。

注意事项

  • eval会执行变量中的所有shell语句,不过这里的内容来自你自己的Heroku配置,安全性有保障,不用担心恶意代码问题。
  • 这些环境变量仅在当前shell会话有效,关闭终端后就会消失,不会影响系统的永久配置。

内容的提问来源于stack exchange,提问作者tetratheta

火山引擎 最新活动