我有一个nodejs javascript项目,但是我想在本地设置一堆环境变量。创建了一个仅导出一些变量的bash文件:
#!/usr/bin/env bash
export waka=flaka
export fat=booty
当我使用点作为源代码并从命令行运行文件时,它工作正常:
. ./env.sh
我可以看到变量已设置
echo $waka # prints "flaka"
但是然后我尝试通过将此命令添加到我的package.json中,使其成为npm脚本
scripts: {
"set-env": ". ./env.sh",
...
}
然后运行它:
npm run set-env
脚本已运行,但未保存环境变量:
echo $waka # prints undefined (assuming you didn't already run it from command line)
所以,我想知道为什么它没有将环境变量另存为npm脚本,以及是否有可能以某种方式从npm脚本运行bash脚本,以便将环境变量保存为其余部分。命令提示符会话。谢谢!
答案 0 :(得分:3)
npm
不是shell命令;它运行在一个单独的进程中,该进程派生另一个外壳程序来运行set-env
指定的命令。 env.sh
被执行,但该外壳程序立即退出,此时更改已消失(然后npm
本身退出)。