1.简介
go env 用于查看和设置 Go 环境变量。
默认情况下 go env 输出格式为 Shell 脚本格式(如 Windows 上是 batch 文件格式)。如果指定变量名称,则只输出变量的值。
2.格式
go env [-json] [-u] [-w] [var ...]
-json 表示以 JSON 格式输出而不是 Shell 脚本格式。
-u 表示 unset,取消环境变量。
-w 表示 write,设置环境变量。
3.示例
(1)查看 Go 所有环境变量。
# Linux 环境查看 Go 所有环境变量
go env
GOARCH="amd64"
GOBIN="/data/home/go_proj/going_proj/bin"
GOCACHE="/home/dablelv/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/dablelv:/data/home/go_proj/going_proj"
GORACE=""
GOROOT="/usr/local/go"
...
# Windows 环境查看 Go 所有环境变量
go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\dablelv\AppData\Local\go-build
set GOENV=C:\Users\dablelv\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
...
(2)查看指定环境变量
go env NAME
(3)以 JSON 格式显示指定环境变量。
go env -json GOROOT
{
"GOROOT": "C:\\Users\\dablelv\\.go\\1.22.1\\go"
}
(4)删除环境变量。
go env -u NAME
(5)设置环境变量
go env -w NAME=VALUE
(6)查看 go env 的帮助信息。
go help env
usage: go env [-json] [-u] [-w] [var ...]
Env prints Go environment information.
By default env prints information as a shell script
(on Windows, a batch file). If one or more variable
names is given as arguments, env prints the value of
each named variable on its own line.
The -json flag prints the environment in JSON format
instead of as a shell script.
The -u flag requires one or more arguments and unsets
the default setting for the named environment variables,
if one has been set with 'go env -w'.
The -w flag requires one or more arguments of the
form NAME=VALUE and changes the default settings
of the named environment variables to the given values.
For more about environment variables, see 'go help environment'.
4.环境变量
Go 环境变量是一些配置信息,可以影响 Go 程序的依赖管理、编译构建和运行环境等方面。
常见环境变量有:
通用环境变量
变量 | 含义 |
---|---|
GOROOT | Go 的安装目录。这个目录包含了 Go 语言的标准库、工具链、编译器以及其他相关文件和资源。 |
GOPATH | 工作区所在目录,默认为 $HOME/go。GOPATH 包含两子目录,GOPAHT/bin 存放 go install 安装的程序。GOPATH/pkg 存放 go get 下载的依赖包。 |
GO111MODULE | 用于控制 Go Modules 的行为,可以设置为 on、off 或 auto。如果设置为 on,则 Go Modules 模式将被启用;如果设置为 off,则禁用 Go Modules 模式;如果设置为 auto,则根据当前目录下是否存在 go.mod 文件来判断是否启用 Go Modules 模式。在 Go 1.13 中,GO111MODULE 的默认值为 auto,即自动启用 Go Modules 模式。这意味着,如果在项目目录下存在 go.mod 文件,则会自动启用 Go Modules 模式,否则会使用传统的 GOPATH 模式。 |
GOOS | 编译代码的操作系统名称。如 linux, windows, darwin 等。 |
GOARCH | 计算机处理器架构。如 amd64, 386, arm, ppc64 等。 |
GOPROXY | 以英文逗号分隔的 Go 模块代理地址,用于加速下载 Go 模块。一般以 ,direct 结尾,比如 GOPROXY=https://goproxy.io,direct,那么意味着在无法从第一个指定的代理地址(此例为 https://goproxy.io)下载所需模块时,会直接从官方源码库下载 |
GOSUMDB | 要使用的校验和数据库的名称以及可选的公钥和URL。详见 https://golang.org/ref/mod#authenticating |
GOPRIVATE GONOPROXY GONOSUMDB | 以 glob 模式表示的模块路径,多个使用逗号分隔。这些模式应该总是直接获取,不走代理拉,且不参与校验。详见 https://golang.org/ref/mod#private-modules |
GOCACHE | 存储编译后信息的缓存目录 |
GOMODCACHE | 指定 Go 模块的缓存目录。当我们使用 Go 模块管理工具(如 go mod)下载和管理依赖包时,这些包会被缓存在 GOMODCACHE 指定的目录。这样可以避免重复下载依赖包,提高依赖包的下载速度和效率。通常为 GOATH/pkg/mod。 |
GODEBUG | 启用各种调试工具。详见 https://go.dev/doc/godebug。 |
GOINSECURE | 表示以 glob 模式表示的模块路径,多个使用逗号分隔。支持以不安全的 HTTP 连接下载模块 |
GOMAXPROCS | 控制 Go 程序可同时执行的最大 CPU 数量。默认为 CPU 核心数,可通过设置 GOMAXPROCS 的值来提高程序并发性能。 |
GOENV | Go 环境变量配置文件的位置。不能使用 ‘go env -w’ 设置。若设置 GOENV=off 将禁用默认配置文件。 |
由 Go 工具链计算得出的变量
这些信息是 Go 工具链能够检测到的附加信息,但它们并不是从系统环境变量直接读取的。
变量 | 含义 |
---|---|
GOEXE | 可执行文件名后缀(Windows上为 .exe,其他系统上为空)。 |
GOMOD | 主模块 go.mod 的绝对路径。如果启用了模块感知模式,但没有 go.mod,则 GOMOD 将为 os.DevNull(类 Unix 系统上为“/dev/null”,Windows 上为“NUL”)。如果禁用模块感知模式,则 GOMOD 将为空字符串。 |
GOTOOLDIR | Go 工具(compile, cover, doc 等)的安装目录。 |
GOVERSION | 已安装的 Go 版本,由 runtime.Version() 报告。 |
以上仅为 Go 部分环境变量,查看所有环境变量可使用命令 go help environment
。
参考文献
Command Documentation
About the go command
go command - cmd/go
help package - cmd/go/internal/help