2016-11-27 151 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',我會編輯我的答案。 –