我刚开始在Windows 7上学习golang.
有了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
Run Code Online (Sandbox Code Playgroud)
然后我echo %envVar%
在命令行中查看,我找到了env vars,如:
GOPATH
GOROOT
Run Code Online (Sandbox Code Playgroud)
但是找不到其他人.
那么它们存放在哪里?一些隐藏的配置文件?
就像@David Budworth 所说的那样,这些变量是您平台的默认值。
大多数情况下我们会改变$GOPATH
和$GOROOT
变量。例如,在我使用的 PC 中export GOPATH=/home/user/go
,您的可能与我的不同。
否则,如果您想找到其他变量的存储位置,您需要查看/usr/lib/go-1.6/src
(对不起,我现在使用的Ubuntu
是 go 1.6,我不知道 Windows 中 go 的路径目录),您会发现有很多bash
脚本在构建go executable
.
例如:
在文件中:make.bash你会看到:$GROOT
在那里声明并用于构建最终的go executable
:
export GOROOT="$(cd .. && pwd)"
Run Code Online (Sandbox Code Playgroud)
我也看到了你的评论GOTOOLDIR
,以及它如何知道你在你的盒子里的安装位置。我想说,go 的源代码有答案,你可以在这里找到它:
// ToolDir is the directory containing build tools.
var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
Run Code Online (Sandbox Code Playgroud)
编辑: 我发现这篇关于构建 Go 的好文章:Go 如何用于构建自身
PS:对不起我的英语。我不是母语为英语的人。
在go1.13中,自定义的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"
Run Code Online (Sandbox Code Playgroud)
$ cat ~/.config/go/env
GOPROXY=https://goproxy.cn,direct
Run Code Online (Sandbox Code Playgroud)
在此文件中使用“KEY=VALUE”形式定义的环境变量将覆盖在https://github.com/golang/go/blob/57662b1575030aa09043cd7a48425abdc6e0e0a3/src/cmd/go/internal/cfg/cfg.go硬编码的默认值#L229