簡體   English   中英

go中的環境變量問題

[英]Problems with environment variables in go

我試圖在.go文件上運行go install,但是似乎失敗了。 失敗,因為未設置我的GOBIN環境變量。 但是,當我回顯它時,我確實得到了它的設置,因為我的.bashrc和.bash_profile文件確保了它的設置。 但是,它沒有在go env中設置。 由於某種原因,go在實際設置時無法識別其設置。

但是,如果我在外殼上手動設置為:

me$ export GOBIN=$GOBIN

現在,即使我在導出它的.bashrc文件上有明確的行並且我的回聲確認了它的設置,en en還是決定識別它。 有人知道為什么去演戲很奇怪嗎?

我嘗試過的事情/參考

我的操作系統

mac osx特立獨行。

轉到版本

-我的go版本是go版本go1.2 darwin / 386。 當我跑步

go version

我得到:

go version go1.2 darwin/386

go env可識別的內容和環境變量

跑步

go env

顯示在我的終端上:

GOARCH="386"
GOBIN=""
GOCHAR="8"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_386"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread -fno-common"
CXX="g++"
CGO_ENABLED="1"

我的.bashrc和.bash_profile看起來如何

我正在.bash_profile中采購.bashrc文件。 也就是我的.bash_profile中的這段代碼:

if [ -f ~/.bashrc ]; then
  source ~/.bashrc #executes for bash subshells
fi

我還嘗試手動(通過手動方式將其作為人類明確地在bash上鍵入)來獲取我的.bash_profile文件(因為無論如何它將運行我的.bashrc文件),但是env仍然無法識別它。

只有當我逐字輸入我的shell

me$ export GOBIN=$GOBIN

確實去env返回我想要的東西:

GOARCH="386"
GOBIN="/Users/brando90/go/bin"
GOCHAR="8"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_386"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread -fno-common"
CXX="g++"
CGO_ENABLED="1"

在相關的shell配置文件中嘗試以下操作:

export GOPATH=/path/to/your/go/workspace
export PATH=$GOPATH/bin:$PATH

不要設置GOBIN因為它在99%的情況下都沒有用(例如,單用戶計算機; 請參閱cmd docs )。 進行這些更改后,請確保unset GOBIN

Go會知道將二進制文件安裝在哪里,因為GOPATH/{bin, pkg, src}是Go會為您處理的東西。 另一方面,您的shell需要知道將$GOPATH/bin添加到路徑中,以便可以直接運行Go二進制文件。

我想確保當其他人來看我的問題時,他們知道是什么問題以及我如何解決它,以便將來參考。

我的bash文件遇到的問題之一是其中一個文件以以下方式導出:

export $GOBIN

代替

export GOBIN

第二個是不正確的,這在我這樣做時已修復:

export GOBIN="$GOPATH/bin"

因此,行不通的原因是由於我的特殊錯誤。 但是,我總體上還了解了其他一些東西。 我了解到,當一個人“開始安裝”時,我們實際上不需要為我的Unix環境變量設置GOBIN。 正確設置GOPATH變量后,如果確實go install了GOPATH變量,Go就會知道 bin目錄以GOPATH / bin的形式存在。 因此,正確設置的重要事項是GOPATH而不是GOBIN。

正如elithrar前面提到的,如果希望外殼程序能夠從go工作區中可能已經生成的go編譯文件中運行命令,則需要在PATH環境變量GOPATH / bin中放入。

感謝大家的幫助!

嘗試將export行放在.bash_profile而不是.bashrc

我已經讀到Terminal始終將bash作為登錄會話運行,因此將源.bash_profile ,而不是.bashrc

有關更多信息,請參見在Mac OS X Lion上設置環境變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM