2016-11-27 94 views
3

我刚开始在Windows 7golang环境变量存储在哪里?

学习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 

然后我在命令行中与echo %envVar%检查,我发现ENV瓦尔像:

GOPATH 
GOROOT 

但没有找到其他人。

那么他们存储在哪里?一些隐藏的配置文件?

回答

6

这些只是您平台的默认设置。将它们视为存储在go.exe可执行文件本身中。

您可以通过将它们设置为与其他任何env var类似的设置来覆盖它们。

+0

但是对于'GOTOOLDIR',如果它在go.exe中,它怎么知道去我盒子上的安装位置?或者它从'GOROOT'推断它? – smwikipedia

+0

而'set'部分给我的印象是它将这些变量添加到我的环境中。 – smwikipedia

+0

我假设go工具正在调用win32 api来获取它自己的位置,然后从那里计算默认路径。请参阅此示例的api:http://stackoverflow.com/questions/2647429/c-windows-path-to-the-folder-where-the-executable-is-located –

3

就像@David Budworth说的那样,这些变量是你平台的默认值。

大多数情况下,我们更改$GOPATH$GOROOT变量。例如,在我的电脑中,我使用export GOPATH=/home/user/go,而你的电脑可能与我的不同。

否则,如果你看看其他变量的存储位置,你需要看/usr/lib/go-1.6/src(对不起,我现在用的是Ubuntu,而且我不知道Windows中的路径目录),你当你建立你的go executable时,会发现有很多bashscripts

例如:make.bash你会看到:

文件中

$GROOT被宣布有,并用于建立最终go executable

export GOROOT="$(cd .. && pwd)" 

我看见了,还有,你的意见对GOTOOLDIR和它如何知道你的安装位置。我会说,那去的源代码有答案,你可以找到它here

// ToolDir is the directory containing build tools. 
var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) 

编辑: 我发现关于建立去这个好文章:How GO uses to build itself

PS:对不起我的英语不好。我不是英语母语的人。

+1

我假设你不会从字面上做:'export GOPATH =/home/user/go/src',而是做:'export GOPATH =/home/user/go',否则你会有$ HOME/go/src/src/STUFF YOU GO GET –

+0

是的,这是一个错误,你是对的,正确的路径是'export GOPATH = $ HOME/go'或'export GOPATH =/user_path/go',我会编辑我的答案。 –