我刚开始在Windows 7上学歌朗。
有了go env,我得到了这个:
set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\Workbench\Go
set GORACE=
set GOROOT=C:\DevTools\Go
set GOTOOLDIR=C:\DevTools\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1然后,我在命令行中使用echo %envVar%检查,发现env如下:
GOPATH
GOROOT但其他的却找不到。
那么它们存放在哪里?隐藏的配置文件?
发布于 2016-11-27 04:33:28
这些只是您的平台的默认设置。把它们想象成存储在go.exe可执行文件本身中。
您可以通过将它们设置为与任何其他env类似的东西来覆盖它们。
发布于 2019-09-29 12:49:25
在go1.13中,定制的GOENV存储在GOENV中,GOENV由系统环境变量指定。如果未指定,则将使用平台的默认值。
要获得平台的默认位置,请使用go env GOENV:在Linux上您将得到$HOME/.config/go/env,在macOS上您将得到$HOME/Library/Application Support/go/env。
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/home/leonardo/go/bin"
GOCACHE="/home/leonardo/.cache/go-build"
GOENV="/home/leonardo/.config/go/env" # if system environment 'GOENV' is empty, the default value for your platform will be used.
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/leonardo/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct" # default value is "https://proxy.golang.org,direc"$ cat ~/.config/go/env
GOPROXY=https://goproxy.cn,direct此文件中使用表单"KEY=VALUE“定义的环境变量将覆盖在https://github.com/golang/go/blob/57662b1575030aa09043cd7a48425abdc6e0e0a3/src/cmd/go/internal/cfg/cfg.go#L229上硬编码的默认值。
发布于 2016-11-27 05:41:17
就像@David所说的,这些变量是平台的缺省值。
大多数情况下,我们会更改$GOPATH和$GOROOT变量。例如,在我的个人电脑中,我使用export GOPATH=/home/user/go,而您的可能与我的不同。
否则,如果您查找存储其他变量的位置,您需要查看/usr/lib/go-1.6/src (对不起,我现在使用的是go 1.6,而且我不知道go在Ubuntu中的路径目录),您会发现在构建go executable时使用了许多bash 脚本。
例如:
在文件:make.bash中,您将看到:$GROOT是在那里声明的,用于构建最终的go executable
export GOROOT="$(cd .. && pwd)"我还看到了你对GOTOOLDIR的评论,以及它是如何知道你在盒子里的安装位置的。我想说,go的源代码有答案,您可以找到它的这里
// ToolDir is the directory containing build tools.
var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)编辑:我找到了一篇关于建筑go:GO如何构建自己的好文章
PS:对不起我的英语。我不是以英语为母语的。
https://stackoverflow.com/questions/40825613
复制相似问题