gpt4 book ai didi

go - 在golang中重用Process以保留环境变量

转载 作者:行者123 更新时间:2023-12-01 22:24:58 25 4
gpt4 key购买 nike

我目前正努力在golang中重用流程。

更多背景信息:
我正在构建的CLI将在开发中使用,因此将使用CLI,因此通过直接支持此设置,可以设置开发环境,从而使部署/构建和测试变得简单。为了使CLI更加灵活,我希望使用户能够集成自定义的脚本。例如,一个脚本会覆盖docker环境变量,以便CLI部署脚本可以部署到正确的环境。使用以下命令公开这些环境:minikube docker-env此脚本将export语句输出到stdout。通常,您将运行eval $(minikube docker-env)将这些环境变量应用于当前的shell。但是我希望我的CLI能够跨脚本共享这些变量。

现在,我们定义了两个命令。 AB。这两个命令都是简单的bash脚本。但是可以在例如mode或python中运行。

脚本A:

export FOO="bar"

脚本 B:
echo $FOO

这两个脚本都是这样执行的:
cmd := exec.Command(bash, [PATH_TO_SCRIPT])
stdout, err := cmd.Output()

我想实现的是有一个执行这些脚本的过程,但是我很难找到一种方法。

我想通过自己定义的脚本来实现此目的的原因是CLI的用户可以轻松添加脚本并稍后使用这些环境变量。

最佳答案

除了:不可能之外,您没有其他答案。这是因为您的问题涉及一个基本的误解,即UNIX环境变量如何工作以及Go语言exec.Command()函数如何工作。进程无法修改其父级的环境变量。或任何其他程序。 Go lang exec.Command()调用将启动一个新进程,该进程不会影响执行该操作的进程的环境变量。您需要重新考虑您的体系结构。

关于go - 在golang中重用Process以保留环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60569351/

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