bash - 为什么我不能通过从 Npm 脚本运行 BASH 脚本来设置环境变量?
问题描述
我有一个 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 脚本,以便为命令提示符的其余部分保存环境变量会议。谢谢!
解决方案
npm
不是 shell 命令;它在一个单独的进程中运行,该进程派生出另一个shell 以运行set-env
. env.sh
被执行,但随后该 shell 立即退出,此时更改消失(然后npm
自身退出)。
推荐阅读
- javascript - 我可以在变量上引用点击事件吗?
- google-apps-script - 如何在 GAS 中使用 Urlfetch 找出要复制的 Web 表的正确链接
- python - 使用 Power BI 在 Python 中迭代数据框以生成新的数据框
- apache - 密码保护目录不提示
- java - 在服务器端解密加密消息
- python - 如何找到我试图在 django 的模板文件夹中使用的静态 img 的绝对路径?
- reactjs - 警告:收到非布尔属性“jsx”的“真”。时代风格的 Jsx
- java - 即使在移动到元素并在 Selenium Java 中显式等待之后,元素也无法交互
- python - 如何在 alpine linux docker 中使用 py-requests?
- vue.js - Nuxtjs - 身份验证