如何全局设置Go环境变量?有无Go专属替代.bashrc的配置方式?
Go环境变量持久化:除shell配置外的替代方案
首先明确说:Go本身并没有专属的、能让系统全局环境变量持久生效的内置配置机制。Go的环境变量本质上还是依赖操作系统的环境变量体系,Go自身不会单独维护一套独立的全局配置系统来持久化这些变量。
不过从Go 1.13版本开始,Go提供了一个工具链专属的持久化配置方式——go env -w命令,它可以把Go相关的环境变量写入用户专属的Go配置文件(Linux下路径一般为$HOME/.config/go/env),让Go工具链在任何终端会话中都能自动读取这些配置:
- 设置GOROOT(注意:通常无需手动设置GOROOT,Go安装后会自动识别,仅当你使用自定义安装路径时才需要):
go env -w GOROOT=/usr/lib/go-1.9/ - 设置GOPATH:
go env -w GOPATH=/my/workspace/go
需要注意的是,这种方式设置的变量仅对Go工具链生效——比如go build、go run等命令会自动读取,但直接在终端执行echo $GOPATH还是看不到这个值,因为shell本身不会读取Go的配置文件。如果想要让shell全局都能识别这些变量,还是得回到编辑.bashrc、.zshrc或者/etc/profile这类shell配置文件的常规方法。
另外,如果你只是想在单个项目中使用特定的GOPATH,也可以在项目根目录创建.env文件写入变量,再通过source .env加载,但这同样属于shell层面的操作,并非Go专属方案。
内容的提问来源于stack exchange,提问作者Mnemosyne




