登录
首页 >  Golang >  Go问答

使用golang中的Process包实现环境变量的持久化

来源:stackoverflow

时间:2024-02-26 18:09:26 442浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《使用golang中的Process包实现环境变量的持久化》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我目前正在努力解决 golang 中的进程重用问题。

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

现在假设我定义了两个命令。 ab。这两个命令都是简单的 bash 脚本。但可以在模式或 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() 调用启动一个新进程,该进程不会影响执行该操作的进程的环境变量。您需要重新思考您的架构。

好了,本文到此结束,带大家了解了《使用golang中的Process包实现环境变量的持久化》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>