在我的系统中,GOBIN变量未设置(空值)。现在不像其他一些 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条经验 获得超13个赞
go on Linux 会将持久设置存储到此文件中:
$HOME/.config/go/env
通过go env -w
命令。由于 go 工具从这个配置和 ENV VARS 加载设置-这解释了为什么您可能会看到不同的值。go 工具结合了两者。
- 2 回答
- 0 关注
- 264 浏览
添加回答
举报
0/150
提交
取消