[英]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.