在我的系統(tǒng)中,GOBIN變量未設(shè)置(空值)?,F(xiàn)在不像其他一些 GO env 變量,即使在命令的輸出中,這似乎也沒有設(shè)置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給的值與系統(tǒng)環(huán)境變量不同?我找不到關(guān)于此的任何文檔,但我的假設(shè)是,如果未在系統(tǒng)級別設(shè)置 env 變量,Golang 會設(shè)置默認(rèn)值——由go env. 這個假設(shè)是否正確?為什么GOBIN未設(shè)置?我嘗試顯式設(shè)置系統(tǒng) env 變量,但它沒有反映在 中g(shù)o env,即使系統(tǒng) 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 環(huán)境信息但它沒有提到上述變量的來源。問題 X ( https://xyproblem.info/ )我正在嘗試安裝 Delve ( https://github.com/go-delve/delve ),我的系統(tǒng)有兩個 go 版本 (go1.10.1和go1.17.8),我打算使用后者 (不幸的是無法刪除前者)go1.17.8 go install github.com/go-delve/delve/cmd/dlv@latest/home/ubuntu在=>創(chuàng)建一個新目錄go并在此處添加 Delve。但卻dlv version無法識別。從go help env,應(yīng)該安裝二進(jìn)制文件的GOBIN位置go install- 在我的例子中它是未設(shè)置的,所以我猜 Golang 將它安裝在GOPATH. 但即便如此,我還是希望二進(jìn)制文件能夠被識別。我也嘗試將位置添加到我的PATH,但這也沒有用。我應(yīng)該在通過安裝之前將我的 GOBIN 設(shè)置為任何特定的東西go1.17.8嗎?我的系統(tǒng)是否有 2 個 go 版本(which go指向 go1.10.1 版本),導(dǎo)致了這個?(1.10.1 沒有模塊支持,但我正在嘗試通過 go.17.8 安裝,所以我認(rèn)為這不是問題)
2 回答
qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個贊
這些 go env 變量是在安裝二進(jìn)制文件時設(shè)置的變量。
請參考https://github.com/golang的代碼:
根據(jù)https://github.com/golang/go/blob/master/src/internal/buildcfg/cfg.go,這些變量取自環(huán)境變量或默認(rèn)變量。
這些默認(rèn)值是根據(jù)運(yùn)行時生成的https://github.com/golang/go/blob/master/src/cmd/dist/buildruntime.go#L48
因此,這些變量不會作為操作系統(tǒng)環(huán)境變量的一部分出現(xiàn)。
這些變量可以被 os.UserConfigDir 中的配置文件或命令覆蓋go env NAME=VALUE。
翻翻過去那場雪
TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個贊
go on Linux 會將持久設(shè)置存儲到此文件中:
$HOME/.config/go/env
通過go env -w命令。由于 go 工具從這個配置和 ENV VARS 加載設(shè)置-這解釋了為什么您可能會看到不同的值。go 工具結(jié)合了兩者。
- 2 回答
- 0 關(guān)注
- 448 瀏覽
添加回答
舉報
0/150
提交
取消
