我有一个包含变量的.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

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

#1楼 票数:3 已采纳

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

env $(<.env) node test

#2楼 票数:0

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

brew install 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

  ask by ThomasReggi translate from so

未解决问题?本站智能推荐:

4回复

如何使用sudo运行命令的pid

我想要得到这个命令的pid。
3回复

如何通过在machineA和machineC上运行shell脚本来执行命令

我有以下提到的三台机器- machineB和machineC具有此目录- 现在,我需要从machineA运行下面的shell脚本,并在/bat/data/snapshot_t1/路径下找到machineB和machineC中的最新目录(通过登录我猜的那些机器)。 下面是我的
1回复

在外壳程序中合并命令有效,但在运行.sh文件时无效

当我在unix shell上交互式运行这些命令时,我将输出记录在jobs-ran-before-lunch 但是当我保存命令时: 在.sh脚本文件( logjobs.sh )中,它没有运行作业,并追加到jobs-ran-before-lunch文件中: 为什么会这样?
1回复

使用sh命令运行时,在myscript.sh文件中替换变量值

我有一个属性文件说mypropety.properties,其中设置了多个键值对。 我将属性加载到运行$. myproperty.properties的当前会话中$. myproperty.properties $. myproperty.properties命令。 现在,当我使用
1回复

以与bash脚本不同的用户身份运行命令

我有2个用户:usr1和usr2。 root用户也不是。 usr1启动一个bash脚本。 从脚本中,我想将某些命令作为usr2运行。 我了解这样做的方法是: 问题在于密码的传递。 这是2个具有不同特权的不同用户,因此,不能跳过usr2的密码。 该脚本可以进行交互,并询
1回复

10个ls命令在单个cron任务上运行?

我在cron上运行以下命令: 这个命令需要几个小时才能完成,因为它运行了大约一百万个文件。 当我执行top命令时,它显示运行ls 14个(!!)差异实例。 这是脚本中的错误,还是导致如此多的ls命令运行的原因?
1回复

程序运行后,UNIX清除命令

我在bash脚本中插入命令' clear '时遇到问题,我想要清除屏幕
1回复

如何在目录中的文件上运行命令以在要访问的每个目录中(Bash)递归创建新文件?

我有一个带有几个子目录的目录。 我想在名为results_cleaned.csv的同一目录中创建每个results.csv文件的副本,其中某些行将被删除。 已知每个子目录仅包含一个文件results.csv 。 在单个目录上运行它可以工作: 但是,在根目录上运行相同的命令