首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能通过从Npm脚本运行BASH脚本来设置Env变量呢?

为什么我不能通过从Npm脚本运行BASH脚本来设置Env变量呢?
EN

Stack Overflow用户
提问于 2018-07-03 20:46:35
回答 1查看 1.6K关注 0票数 2

我有一个nodejs javascript项目,但是我想在本地设置一组环境变量。创建了一个bash文件,该文件仅导出一些变量:

代码语言:javascript
复制
#!/usr/bin/env bash

export waka=flaka
export fat=booty

当我使用点从命令行源文件并运行文件时,它工作得很好:

代码语言:javascript
复制
. ./env.sh

我可以看到变量已经设置好了

代码语言:javascript
复制
echo $waka  # prints "flaka"

但是,我尝试接受这个命令,并将它添加到我的package.json中,使它成为npm脚本。

代码语言:javascript
复制
scripts: {
  "set-env": ". ./env.sh",
  ...
 }

然后运行它:

代码语言:javascript
复制
npm run set-env

脚本正在运行,但没有保存环境变量:

代码语言:javascript
复制
echo $waka  # prints undefined (assuming you didn't already run it from command line)

因此,我想知道为什么它不将环境变量保存为npm脚本,以及是否有可能从npm脚本中运行bash脚本,以便将环境变量保存到命令提示符会话的其余部分。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-03 20:49:22

npm不是shell命令;它在一个单独的进程中运行,该进程分叉另一个shell,以运行set-env指定的命令。env.sh被执行,但是该外壳立即退出,此时更改就会消失(然后npm本身就会退出)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51162609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档