添加.env可变参数以运行给定的命令

我有一个.env文件中的variables就像这样:

HELLO=world SOMETHING=nothing 

有一天我发现了这个很棒的脚本,这些脚本将这些variables放到当前会话中,所以当我运行这样的东西的时候

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

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

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

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

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

并且只有在testing脚本第一次运行时才能使用envvariables。

Solutions Collecting From Web of "添加.env可变参数以运行给定的命令"

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

 env $(<.env) node test 

我开始使用这个过去与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