在我的系統中,GOBIN變量未設置(空值)?,F在不像其他一些 GO env 變量,即使在命令的輸出中,這似乎也沒有設置go env。(我是用戶ubuntu,~也是/home/ubuntu/)echo $GOBIN //emptyecho $GOPATH //emptyecho $GOROOT //emptygo env GOBIN //emptygo env GOPATH/home/ubuntu/gogo env GOROOT/usr/local/gowhich go/usr/local/go/bin/go為什么go env給的值與系統環境變量不同?我找不到關于此的任何文檔,但我的假設是,如果未在系統級別設置 env 變量,Golang 會設置默認值——由go env. 這個假設是否正確?為什么GOBIN未設置?我嘗試顯式設置系統 env 變量,但它沒有反映在 中go env,即使系統 env 變量似乎已被修改。為什么會這樣?echo $GOBIN //emptygo env GOBIN //emptygo env GOPATH/home/ubuntu/goGOBIN=‘/home/ubuntu/go/bin’echo $GOBIN/home/ubuntu/go/bingo env GOBIN //empty官方文檔 ( https://pkg.go.dev/cmd/go ) 說:env 打印 Go 環境信息但它沒有提到上述變量的來源。問題 X ( https://xyproblem.info/ )我正在嘗試安裝 Delve ( https://github.com/go-delve/delve ),我的系統有兩個 go 版本 (go1.10.1和go1.17.8),我打算使用后者 (不幸的是無法刪除前者)go1.17.8 go install github.com/go-delve/delve/cmd/dlv@latest/home/ubuntu在=>創建一個新目錄go并在此處添加 Delve。但卻dlv version無法識別。從go help env,應該安裝二進制文件的GOBIN位置go install- 在我的例子中它是未設置的,所以我猜 Golang 將它安裝在GOPATH. 但即便如此,我還是希望二進制文件能夠被識別。我也嘗試將位置添加到我的PATH,但這也沒有用。我應該在通過安裝之前將我的 GOBIN 設置為任何特定的東西go1.17.8嗎?我的系統是否有 2 個 go 版本(which go指向 go1.10.1 版本),導致了這個?(1.10.1 沒有模塊支持,但我正在嘗試通過 go.17.8 安裝,所以我認為這不是問題)
2 回答

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
這些 go env 變量是在安裝二進制文件時設置的變量。
請參考https://github.com/golang的代碼:
根據https://github.com/golang/go/blob/master/src/internal/buildcfg/cfg.go,這些變量取自環境變量或默認變量。
這些默認值是根據運行時生成的https://github.com/golang/go/blob/master/src/cmd/dist/buildruntime.go#L48
因此,這些變量不會作為操作系統環境變量的一部分出現。
這些變量可以被 os.UserConfigDir 中的配置文件或命令覆蓋go env NAME=VALUE
。

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
go on Linux 會將持久設置存儲到此文件中:
$HOME/.config/go/env
通過go env -w
命令。由于 go 工具從這個配置和 ENV VARS 加載設置-這解釋了為什么您可能會看到不同的值。go 工具結合了兩者。
- 2 回答
- 0 關注
- 403 瀏覽
添加回答
舉報
0/150
提交
取消