gpt4 book ai didi

linux - 从 bash 或 node 写入终端环境

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:56 24 4
gpt4 key购买 nike

目标

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

例子

包.json

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

theThing.bs

read -p "Size: " theSize
read -p "Shape: " theShape
read -p "Color: " theColor

注意事项

然后我希望这些环境变量可用于随后从同一终端运行的任何脚本或代码。不仅仅是从那个脚本中。如果可能的话,也不要来自操作系统中的任何地方(也就是其他终端或 session )。

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

这在很大程度上是一个方便的工具,但它对这个过程确实很有帮助。

最佳答案

如果没有父进程的合作,UNIX 环境模型使您无法完成您正在做的事情。出于安全原因,子进程不能直接操纵其父进程的环境,包括其环境变量。通常的解决方案是让子进程编写一系列设置环境变量的 shell 语句,并让父 shell“评估”命令。例如,如果您编写了一个名为 my_env_init 的 shell 脚本,它执行了

echo export MY_SIZE=42

你会告诉用户输入

eval $(my_env_init)

当你像 NPM 程序一样在中间有任意层时,你试图做的事情基本上是不可能的。因为它也必须收集由您的 env 设置脚本编写的命令并将这些命令回显到顶级 shell。您正在以错误的方式解决这个问题,但没有人能够提供正确的答案,因为您的问题没有充分解释您尝试这样做的原因。

关于linux - 从 bash 或 node 写入终端环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com