【问题标题】:Adding .env vairables to run in for a given command添加 .env 变量以在给定命令中运行
【发布时间】:2015-03-30 20:29:50
【问题描述】:

我有一个 .env 文件,其中包含如下变量:

HELLO=world
SOMETHING=nothing

前几天我发现了这个很棒的脚本,它将这些变量放入当前会话中,所以当我运行这样的东西时

$(cat ./.env | grep -v ^# | xargs) && node test

然后我可以访问test.js节点文件中的变量。

console.log(process.env.HELLO)
console.log(process.env.SOMETHING)

问题在于该命令将 .env 变量放在整个会话中,所以当我运行 node test 而不运行 $(cat ./.env | grep -v ^# | xargs) 后,它仍然可以访问这些变量,我正在编写node.js 测试说明了这些变量,我希望能够在有和没有这些 .env 变量的情况下运行相同的命令,而不必担心它们是否仍在会话中。理想情况下我想运行

put-env-variables-for-this-command-first-command node test && node test

并且让环境变量仅在测试脚本第一次运行时可用。

【问题讨论】:

  • bash 允许您执行特定的FOO=bar ./script 变量,这些变量为“脚本”的生命周期设置 $FOO。
  • @MarcB 如何在脚本生命周期内以编程方式 cat .env 的内容?假设我在.env 中有 20 个变量,我不想每次都手动写入它们:/

标签: linux node.js bash shell unix


【解决方案1】:

这将使您仅在调用node test 期间访问变量

env $(<.env) node test

【讨论】:

    【解决方案2】:

    我开始为此使用 foreman,它曾经与 heroku 工具带捆绑在一起。它不再包括在内,但是有一个名为forego 的独立版本非常好用。

    brew install forego 在 Mac 上。

    然后您可以使用它来将.env 变量支撑到当前进程中。

    forego run ${ANY COMMAND}

    例子

    • forego run babel-node index.js
    • forego run node index.js
    • forego run npm start

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      相关资源
      最近更新 更多