我想编写一个脚本,提示用户输入一些信息,例如IE大小,形状,颜色,然后将其放在该终端的环境上。也许最重要的是,我也想从npm脚本中运行此脚本。
package.json
2MB
theThing.bs
"scripts":{
"fillVars": "source theThing.bs",
"echoVarsHoursLater": "echo $theSize" //etc
}
然后我希望这些env var可用于以后从同一终端运行的任何脚本或代码。不只是在该脚本中。如果可能的话,也不要从操作系统的任何地方(也称为其他终端或会话)。
我知道如果我只是直接在终端中获取theThing.bs,我就能使其正常工作。但是我不知道如何通过npm脚本部分。
这在很大程度上是一种方便的工具,但是对于此过程来说确实是一个有用的工具。
答案 0 :(得分:0)
如果没有父进程的配合,UNIX环境模型将使您无法做任何事情。出于安全原因,子进程不能直接操纵其父级环境,包括其环境变量。通常的解决方案是让子进程编写一系列shell语句,这些语句设置环境变量并让父外壳“ eval”命令。例如,如果您编写了一个名为my_env_init
的shell脚本,
echo export MY_SIZE=42
您会告诉用户输入
eval $(my_env_init)
当您像NPM程序那样在中间有任意层时,您要尝试执行的操作基本上是不可能的。同样,也必须收集由env设置脚本编写的命令,并将它们回显到顶层shell。您正在以错误的方式进行操作,但是没有人能够提供正确的答案,因为您的问题未能充分说明您为何要这样做。