Go语言 export和go env -w之间有什么区别
问题描述
“go env -w”到底是做什么的?我读过这个长篇提案,但是还没有弄清楚其要点。即:
- 它是否会将此设置写入Go相关的配置文件中的任何位置?
- 如果我只是简单地使用
export
,这两种方法有什么区别? - 如果我使用”go env -w”,如果以后不再需要它,如何取消设置?
解决方案
运行go help environment
:
go命令及其调用的工具使用环境变量进行配置。如果环境变量未设置或为空,则go命令使用合理的默认设置。要查看变量的有效设置,请运行go env <NAME>
。要更改默认设置,请运行go env -w <NAME>=<VALUE>
。
使用go env -w
更改的默认值将记录在存储在每个用户配置目录下的Go环境配置文件中,该目录由os.UserConfigDir
报告。
配置文件的位置可以通过设置环境变量GOENV
来更改,go env GOENV
打印有效位置,但go env -w
无法更改默认位置。详细信息请参阅go help env
。
环境变量具有优先级。因此,如果您的系统中设置了GOPRIVATE
,则将使用该设置。如果没有设置或取消设置,将使用使用go env -w GOPRIVATE=xy
设置的值。
如果运行go help env
:
选项-u
需要一个或多个参数,并取消设置已使用go env -w
设置的命名环境变量的默认设置。
因此,您可以通过运行go env -u GOPRIVATE
来取消手动更改的GOPRIVATE
默认设置。