**
1 安装了新版本的go后 为什么go version 还是旧版本?
**
如果你已经按照上述步骤安装了新版本的 Go,但 go version 命令仍然显示旧版本,可能是因为你的环境变量设置不正确或未正确生效。你可以尝试以下方法来解决问题:
重新加载配置文件:运行以下命令以重新加载你的 shell 配置文件,使更改生效:
source ~/.bash_profile # 或者使用相应的配置文件,如 ~/.bashrc 或 ~/.zshrc
确保在终端中运行该命令后,你的配置文件中的新 Go 版本的环境变量设置已正确加载。
检查环境变量设置:运行以下命令来检查当前的 Go 环境变量设置:
go env
确认输出中的 GOROOT
和 PATH
是否指向你安装的新版本的 Go。
检查路径优先级:在终端中运行以下命令,查看系统在终端中搜索可执行文件时的路径优先级:
echo $PATH
确认新版本的 Go 所在路径在 $PATH
中的位置是否在旧版本之前。如果不在正确的位置,你可以编辑你的 shell 配置文件,将新版本的 Go 路径添加到 $PATH
变量的前面。
例如,在 ~/.bash_profile
或 ~/.bashrc
中添加以下行:
````shell
export PATH=/path/to/new/go/bin:$PATH
将 /path/to/new/go
替换为你安装的新版本 Go 的路径。
检查安装目录:确保你安装的新版本的 Go 在正确的目录下。默认情况下,新版本的 Go 应该被安装到 /usr/local/go 目录下。
如果以上步骤都没有解决问题,可能还有其他因素导致旧版本的 Go 仍然被使用。你可以尝试重新启动终端或计算机,以确保环境变量和配置的正确加载。如果问题仍然存在,建议卸载旧版本的 Go,并重新按照正确的步骤安装新版本的 Go。
请确保在更改或卸载任何软件之前备份重要的文件,并谨慎操作。
如果你已经确认 GOROOT 和 PATH 环境变量都正确指向了新版本的 Go,但 go version 仍然显示旧版本,可能是因为系统中存在多个 go 可执行文件,而旧版本的 go 在路径中的优先级更高。
你可以尝试以下方法来解决这个问题:
指定完整路径运行 go:在终端中,使用新版本 Go 的完整路径运行 go 命令。例如,假设新版本 Go 的路径为 /usr/local/go/bin/go,则在终端中运行以下命令:
/usr/local/go/bin/go version
如果显示的是新版本的 Go,说明新版本已正确安装并可用。这表明问题可能是由于旧版本的 go
仍在系统中的其他路径中。
搜索其他 go 可执行文件:在终端中运行以下命令,搜索系统中的所有 go 可执行文件:
which -a go
这将列出所有系统中找到的 go
可执行文件的路径。检查输出中是否有其他版本的 go
,并注意它们在路径中的位置。
删除旧版本的 go:如果你确定找到了旧版本的 go,可以考虑将其删除或重命名,以便新版本的 go 在路径中优先使用。
注意:在执行此操作之前,请确保备份旧版本的 go 或确认你不再需要它。
检查系统的 PATH 顺序:检查系统中的 PATH 环境变量的顺序,确保新版本的 Go 所在路径在旧版本之前。你可以编辑你的 shell 配置文件,将新版本的 Go 路径添加到 $PATH 变量的前面。
例如,在 ~/.bash_profile 或 ~/.bashrc 中添加以下行:
export PATH=/usr/local/go/bin:$PATH
如果你已经在正确的位置设置了新版本的 Go 路径,可以尝试重新加载配置文件,然后再次验证 go version
。
如果以上方法仍然没有解决问题,可能需要进行更进一步的调查和排查。你可以尝试在 Go 官方论坛或其他相关社区寻求帮助,或者尝试重新安装新版本的 Go。
**
2 homebrew 卸载go
**
如果你使用 Homebrew 安装了 Go,并希望卸载它,可以按照以下步骤进行操作:
打开终端:打开终端应用程序。
检查 Go 安装:运行以下命令,检查是否已通过 Homebrew 安装了 Go:
brew list
如果在列表中看到与 Go 相关的包(如 go
或 golang
),则表示 Go 已通过 Homebrew 安装。
卸载 Go:运行以下命令,使用 Homebrew 卸载 Go:
brew uninstall go
这将卸载 Go 及其关联的包和文件。检查残留文件:运行以下命令,检查是否还有残留的 Go 文件:shell
复制
which go
如果输出显示 /usr/local/bin/go
或其他 Go 可执行文件的路径,表示仍然存在残留文件。
删除残留文件:如果发现有残留文件,请使用以下命令删除它们(确保谨慎操作):
sudo rm -rf /usr/local/go
这将删除 Go 安装目录。验证卸载:运行以下命令验证 Go 是否已成功卸载:
go version
如果提示找不到 go
命令或显示其他错误信息,则表示 Go 已成功卸载。
通过按照上述步骤,你可以使用 Homebrew 卸载 Go。请注意,在卸载 Go 之前,确保备份你的重要文件和项目,并谨慎操作以避免意外删除其他文件。
3 homebrew 中的go version优先级 为什么比 系统中的go高?
在使用 Homebrew 安装 Go 时,Homebrew 会将 Go 安装到 Homebrew 的管理路径下,例如 /usr/local/Cellar/go 目录。当你在终端中运行 go version 命令时,系统会按照特定的搜索顺序查找可执行文件,而这个搜索顺序决定了哪个路径中的 go 可执行文件被优先使用。
默认情况下,终端会按照 $PATH 环境变量中的路径顺序搜索可执行文件。而在 Homebrew 安装的软件中,Homebrew 会将其管理的软件路径添加到 $PATH 的前面。因此,当你使用 Homebrew 安装 Go 后,Homebrew 的路径会在系统路径之前,从而使 Homebrew 中安装的 Go 版本优先生效。
这样设计的目的是为了避免与系统自带的软件冲突,并允许用户在不影响系统的情况下独立管理软件版本。Homebrew 通过将软件安装到自己的目录中,并调整 $PATH 环境变量的顺序,确保在终端中优先使用 Homebrew 中安装的软件版本。
如果你希望系统中的 Go 版本优先生效,可以考虑手动调整 $PATH 环境变量的顺序,将系统路径放在 Homebrew 路径之前。这样,在终端中运行 go version 时,系统中的 go 可执行文件将被优先使用。
请注意,更改 $PATH 环境变量可能会影响其他软件的运行,因此在进行任何更改之前,请确保理解和谨慎操作。
这里我的PATH:
可以看到homebrew的是排在/usr/local/go之前的,怪不得就算装了新版本在/usr/local ,查看go version 还是 旧版本,这里把homebrew的删了吧就行了。
本来:
后来
/opt/homebrew/bin on stable *1 brew uninstall go ok at 13:39:10
Uninstalling /opt/homebrew/Cellar/go/1.18.1... (11,964 files, 595.3MB)/opt/homebrew/bin on stable *1 which go ok at 13:39:41
/usr/local/bin/go/opt/homebrew/bin on stable *1 which -a go ok at 13:39:54
/usr/local/bin/go
/usr/local/go/bin/go/opt/homebrew/bin on stable *1 go version ok at 13:39:59
go version go1.19 darwin/arm64