【发布时间】:2018-12-06 18:08:50
【问题描述】:
目标
我想编写一个脚本,它会提示用户输入一些信息,IE 大小、形状、颜色,然后它将放在 该终端的环境上。也许最重要的是,我还想在 npm 脚本中运行这个脚本。
示例
package.json
"scripts":{
"fillVars": "source theThing.bs",
"echoVarsHoursLater": "echo $theSize" //etc
}
theThing.bs
read -p "Size: " theSize
read -p "Shape: " theShape
read -p "Color: " theColor
注意事项
然后我希望这些环境变量可用于之后从同一终端运行的任何脚本或代码。不只是从该脚本中。如果可能,也不要从操作系统中的任何地方(也就是其他终端或会话)。
我知道如果我直接在终端中获取 theThing.bs,我可以让它工作。但我不知道如何通过 npm 脚本部分。
这在很大程度上是一个方便的工具,但它对这个过程非常有帮助。
【问题讨论】:
-
无法更改其他进程的环境。
-
进程(包括shell)有环境,但终端没有。似乎具有每个终端设置的程序会传递一个未修改的单个环境变量,该变量告诉您在哪里可以找到您的信息(
ssh-agent,X11)或根据 tty 名称在已知文件中查找信息(sudo,sem) -
@that other guy “终端”显然是指终端中的顶级交互式外壳。此外,基于现代软件的“终端”模拟器肯定有一个环境,包括环境变量。只有像 Televideo 950 这样的古老硬件终端才没有任何意义。
-
这就像说如果您使用图形文件管理器,硬盘驱动器就有一个环境。不要混淆 PTY 及其控制过程。
标签: linux bash build environment-variables npm-scripts