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

Shi*_*Lee 3 unix shell

当我做

Hello=123 npm run a && npm run b && npm run c
Run Code Online (Sandbox Code Playgroud)

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

我还有其他方法可以一次传递所有参数吗?

dgc*_*dgc 5

尝试:

Hello=123 sh -c 'npm run a && npm run b && npm run c'
Run Code Online (Sandbox Code Playgroud)

更好:env在整行之前使用。这样一来,就可以在Bourne / POSIX和csh派生的shell中使用单行代码:

env Hello=123 sh -c 'npm run a && npm run b && npm run c'
Run Code Online (Sandbox Code Playgroud)

你的看法是,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
Run Code Online (Sandbox Code Playgroud)