5

我有一个包含以下脚本的 package.json:

"scripts": {
  "config": ". ./setup.sh"
},

setup.sh 文件提示用户输入 API 令牌,

read -p "Enter API Authorization Token: " val
export API_AUTH_TOKEN=$val

和一个通过 PS3 菜单的环境。例如:输入 1 应该导出 DEFAULT_ENV=' http://localhost:8000 '。

当我通过终端(. ./setup.sh)运行这个 setup.sh 时,它工作得很好。只有当我运行“npm run config”时,它实际上并没有导出这些值,尽管它的行为就像它那样。我的印象是,这与该脚本是另一个进程的一个进程有关,因此不会影响全局环境。我该如何做到这一点?

4

1 回答 1

3

这是因为导出仅适用于子进程及其本身。

您可以编辑您的文件,添加该行以查看它:

read -p "Enter API Authorization Token: " val
export API_AUTH_TOKEN=$val
echo $API_AUTH_TOEKEN

事实上它永远不会影响父进程(如 shell 窗口)

要影响全局,您应该将变量保存在文件中.bashrcsource .bashrc使其生效。

于 2017-07-19T16:10:15.623 回答