从bash或节点写入终端环境

时间:2018-06-27 18:54:56

标签: linux bash build environment-variables npm-scripts

目标

我想编写一个脚本,提示用户输入一些信息,例如IE大小,形状,颜色,然后将其放在该终端的环境上。也许最重要的是,我也想从npm脚本中运行此脚本。

示例

package.json

2MB

theThing.bs

"scripts":{
   "fillVars": "source theThing.bs",
   "echoVarsHoursLater": "echo $theSize" //etc
}

注释

然后我希望这些env var可用于以后从同一终端运行的任何脚本或代码。不只是在该脚本中。如果可能的话,也不要从操作系统的任何地方(也称为其他终端或会话)。

我知道如果我只是直接在终端中获取theThing.bs,我就能使其正常工作。但是我不知道如何通过npm脚本部分。

这在很大程度上是一种方便的工具,但是对于此过程来说确实是一个有用的工具。

1 个答案:

答案 0 :(得分:0)

如果没有父进程的配合,UNIX环境模型将使您无法做任何事情。出于安全原因,子进程不能直接操纵其父级环境,包括其环境变量。通常的解决方案是让子进程编写一系列shell语句,这些语句设置环境变量并让父外壳“ eval”命令。例如,如果您编写了一个名为my_env_init的shell脚本,

echo export MY_SIZE=42

您会告诉用户输入

eval $(my_env_init)

当您像NPM程序那样在中间有任意层时,您要尝试执行的操作基本上是不可能的。同样,也必须收集由env设置脚本编写的命令,并将它们回显到顶层shell。您正在以错误的方式进行操作,但是没有人能够提供正确的答案,因为您的问题未能充分说明您为何要这样做。