环境变量

环境变量


查看 Go 相关的环境变量 #

go env

设置方法 #

Go version >= 1.13 #

go env -w <环境变量名>=<值>

Go version < 1.13 #

  1. ~/.profile添加环境变量
export <环境变量名>=<值>
  1. 使环境变量生效
source /etc/profile
  1. /etc/profile添加环境变量
export <环境变量名>=<值>
  1. 使环境变量生效
source /etc/profile
我的电脑 -> 属性 -> 高级设置 -> 环境变量

环境变量参考 #

关于默认值:* 代表视情况而定,- 代表空值

通用 #

变量名默认描述
GO111MODULEauto控制GO命令是在module aware模式下运行还是在GOPATH模式下运行。参考:https://golang.org/ref/mod#mod-commands. 可用值:on/off/auto
GCCGOgccgo运行go build -compiler=gccgo时的gccgo命令
GOARCH*要为其编译代码的体系结构或处理器。
GOBIN-go install安装命令的目录。
GOCACHE*将在其中存储缓存信息以便在将来的构建中重复使用的目录。
GOMODCACHE$GOPATH/mod将存储下载的模块的目录。
GODEBUG-使能各种调试信息。参考go doc runtime
GOENV*环境配置文件所在的路径,不能使用go wnv -w设置
GOFLAGS-空格分隔的-flag=value列表,用于各种go命令,可被覆盖如果命令中有flag列表
GOINSECURE-逗号分隔的模块路径前缀列表,应始终以不安全的方式获取。但仅适用于直接提取的依赖项。GOINSECURE不禁用校验和数据库验证。可以使用GOPRIVATE或GONOSUMDB来实现这一点。
GOOS*要为其编译代码的操作系统。比如:linux, darwin, windows, netbsd
GOPATH*GOPATH模式下,Go的工程代码路径。
GOPROXYhttps://goproxy.io,directGo模块代理的URL。参考:https://go.dev/ref/mod#module-proxy
GOPRIVATE-逗号分隔的模块路径前缀列表,这些模块应该始终直接获取,或者不应该与校验和数据库进行比较。参考:https://go.dev/ref/mod#private-modules.
GONOPROXY-逗号分隔的模块路径前缀列表,这些模块应该始终直接获取,或者不应该与校验和数据库进行比较。参考:https://go.dev/ref/mod#private-modules.
GONOSUMDB-逗号分隔的模块路径前缀列表,这些模块应该始终直接获取,或者不应该与校验和数据库进行比较。参考:https://go.dev/ref/mod#private-modules.
GOROOT*Go的安装路径。
GOSUMDB“sum.golang.org”要使用的校验和数据库的名称,还可以选择其公钥和URL,参考:https://go.dev/ref/mod#authenticating
GOTMPDIR-go命令将在其中写入临时源文件、软件包和二进制文件的目录。
GOVCS-列出可与匹配服务器一起使用的版本控制命令。参考 ’go help vcs'

CGO相关 #

变量名默认描述
ARar使用gccgo编译器生成时用于操作库归档的命令。
CCclang用于编译C代码的命令
CGO_ENABLED1是否支持cgo命令。0或1。
CGO_CFLAGS-g -O2编译C代码时CGO将传递给编译器的标志。
CGO_CFLAGS_ALLOW-指定允许出现在#cgo CFLAGS源代码指令中的附加标志的正则表达式。不适用于CGO_CFLAGS环境变量。
CGO_CFLAGS_DISALLOW-指定不允许出现在#cgo CFLAGS源代码指令中的附加标志的正则表达式。不适用于CGO_CFLAGS环境变量。
CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW-与CGO_CFLAGS,CGO_CFLAGS_ALLOW,CGO_CFLAGS_DISALLOW类似,但是是用于C预处理器
CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW-与CGO_CFLAGS,CGO_CFLAGS_ALLOW,CGO_CFLAGS_DISALLOW类似,但是是用于C++编译器
CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW-与CGO_CFLAGS,CGO_CFLAGS_ALLOW,CGO_CFLAGS_DISALLOW类似,但是是用于Fortran编译器。
CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW-与CGO_CFLAGS,CGO_CFLAGS_ALLOW,CGO_CFLAGS_DISALLOW类似,但是是用于链接器
CXXclang++用于编译C++代码的命令。
FC-用于编译Fortran代码的命令。
PKG_CONFIGpkg-configpkg-config工具的路径

特殊平台相关 #

变量名描述
GOARM对于GOARCH=ARM,为其编译的ARM体系结构。有效值为5、6、7。
GO386对于GOARCH=386,如何实现浮点指令。有效值为SSE2(默认值)、SoftFloat。
GOMIPS对于GOARCH=MIPS{,le},是否使用浮点指令。有效值为hardFloat(默认值)、softFloat。
GOMIPS64对于GOARCH=MIPS64{,LE},是否使用浮点指令。有效值为hardFloat(默认值)、softFloat。
GOPPC64对于GOARCH=ppc64{,le},目标ISA(指令集体系结构)。有效值为POWER8(默认值)、POWER9。
GOWASM对于GOARCH=wasm,要使用的实验性WebAssembly特性的列表,以逗号分隔。有效值为satconv、signext。

特殊用途相关 #

变量名描述
GCCGOTOOLDIR如果设置,则在何处查找gccgo工具,如cgo。默认值基于gccgo的配置方式。
GOEXPERIMENT逗号分隔的要启用或禁用的工具链实验列表。可用实验的列表可能会随着时间的推移而任意改变。有关当前有效值的信息,请参见src/Internal/go实验/flag s.go。警告:此变量用于GO工具链本身的开发和测试。不支持超出该目的的使用。
GOROOT_FINAL当go安装在构建位置以外的位置时的安装路径。堆栈跟踪中的文件名将从GOROOT重写为GOROOT_FINAL。
GO_EXTLINK_ENABLED将-linkmode=auto与使用CGO的代码一起使用时,链接器是否应使用外部链接模式。设置为0将禁用外部链接模式,设置为1将启用该模式。
GIT_ALLOW_PROTOCOL由Git定义。冒号分隔的允许与GIT FETCH/CLONE一起使用的方案列表。如果设置,任何未明确提到的方案都将被“Go Get”视为不安全。因为变量是由Git定义的,所以不能使用‘go env -w’设置默认值。

额外信息 #

变量名描述
GOEXE可执行文件名后缀(Windows 上为“.exe”,其他系统上为“”)。
GOGCCFLAGS提供给 CC 命令的以空格分隔的参数列表。
GOHOSTArCHGO 工具链二进制文件的架构(GOARCH)。
GOHOSTOSGo 工具链二进制文件的操作系统(GOOS)。
GOMOD主模块 go.mod 的绝对路径。如果启用了模块感知模式,但没有go.mod,则GOMOD将为os.DevNull(在类Unix系统上为“/dev/null”,在Windows上为“nul”)。如果禁用模块感知模式,则GOMOD将为空字符串。
GOTOOLDIRgo工具(compile,cover,doc,etc…)所在的目录
GOVERSION已安装go的版本, 和runtime.Version一样

参考链接:https://pkg.go.dev/cmd/go#hdr-Environment_variables