添加.env变量以运行给定命令

时间:2015-03-30 20:29:51

标签: linux node.js bash shell unix

我有一个包含变量的.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)后,它仍然可以访问这些变量,I& #39;我正在编写一个node.js测试来解释这些变量,并且我喜欢能够使用和不使用这些.env变量运行相同的命令,而不必担心它们是否仍在会话中。理想情况下我想运行

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

并且env变量仅在第一次运行时在测试脚本中可用。

2 个答案:

答案 0 :(得分:3)

这将使您在调用node test

期间访问变量
env $(<.env) node test

答案 1 :(得分:0)

我开始使用foreman这个曾经与heroku工具带捆绑在一起。它不再包括在内,但是有一个名为forego的独立版本可以很好地运行。

mac上的

brew install forego

然后,您可以使用它将.env变量支持到当前流程中。

forego run ${ANY COMMAND}

实施例

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