为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 `go env` 命令不反映环境变量的变化?

为什么 `go env` 命令不反映环境变量的变化?

Go
牛魔王的故事 2023-02-28 20:30:47
在我的系统中,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的代码:

因此,这些变量不会作为操作系统环境变量的一部分出现。

这些变量可以被 os.UserConfigDir 中的配置文件或命令覆盖go env NAME=VALUE


查看完整回答
反对 回复 2023-02-28
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

go on Linux 会将持久设置存储到此文件中:

$HOME/.config/go/env

通过go env -w命令。由于 go 工具从这个配置和 ENV VARS 加载设置-解释了为什么您可能会看到不同的值。go 工具结合了两者。


查看完整回答
反对 回复 2023-02-28
  • 2 回答
  • 0 关注
  • 264 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信