在我的系統中,GOBIN變數未設定(空值)。現在與其他一些 GO 環境變數不同,即使在go env命令的輸出中,這似乎也沒有設定。(我是用戶ubuntu,~也是/home/ubuntu/)
echo $GOBIN
//empty
echo $GOPATH
//empty
echo $GOROOT
//empty
go env GOBIN
//empty
go env GOPATH
/home/ubuntu/go
go env GOROOT
/usr/local/go
which go
/usr/local/go/bin/go
為什么
go env給出與系統環境變數不同的值?我找不到任何關于此的檔案,但我的假設是,如果未在系統級別設定 env 變數,Golang 會設定默認值 - 由go env. 這個假設正確嗎?為什么未
GOBIN設定?我嘗試顯式設定系統環境變數,但它沒有反映在 中go env,即使系統環境變數似乎已被修改。為什么呢?
echo $GOBIN
//empty
go env GOBIN
//empty
go env GOPATH
/home/ubuntu/go
GOBIN=‘/home/ubuntu/go/bin’
echo $GOBIN
/home/ubuntu/go/bin
go 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不為人知。From go help env,應該GOBIN在哪里go install安裝二進制檔案 - 在我的情況下它是未設定的,所以我猜 Golang 將它安裝在GOPATH. 但即便如此,我還是希望二進制檔案能夠被識別。我也嘗試將位置添加到 my PATH,但這也不起作用。
- 我應該在安裝之前將我的 GOBIN 設定為任何特定的東西
go1.17.8嗎? - 我的系統是否有 2 個 go 版本(
which go指向 go1.10.1 版本),導致這種情況?(1.10.1 不支持模塊,但我嘗試通過 go.17.8 進行安裝,所以我認為這不會是問題)
uj5u.com熱心網友回復:
這些 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。
uj5u.com熱心網友回復:
在 Linux 上繼續會將持久設定存盤到此檔案中:
$HOME/.config/go/env
通過go env -w命令。由于 go 工具從該配置和 ENV VARS 加載設定-這解釋了為什么您可能會看到不同的值。go 工具結合了兩者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514599.html
標籤:去钻研安装
