将环境变量传递给多个命令

时间:2017-08-31 19:26:26

标签: shell unix

当我这样做时

Hello=123 npm run a && npm run b && npm run c

我希望在Hello=123进程中传递a, b and c环境变量。但事实证明只有a正确设置了环境变量。

有没有其他方法可以一次传递参数?

1 个答案:

答案 0 :(得分:3)

尝试:

Hello=123 sh -c 'npm run a && npm run b && npm run c'

更好:在整行之前使用env。这使得单线程在Bourne / POSIX和csh派生的shell中都起作用:

env Hello=123 sh -c 'npm run a && npm run b && npm run c'

您的观察是var=val foo && bar仅在$var而非foo的环境中设置bar。那是对的。解决方案是为命令设置环境,该命令又运行foobarsh -c

另一种解决方案当然是:

Hello=123; export Hello   # or export Hello=123 if using bash
npm run a && npm run b && npm run c