
Mac 用户升级 Go 后终端仍显示旧版本(如 1.7.5),通常因 PATH 中存在多个 Go 二进制路径且旧版本路径优先级更高所致;需检查并修正 PATH 顺序,或统一使用 Homebrew 管理版本。
mac 用户升级 go 后终端仍显示旧版本(如 1.7.5),通常因 path 中存在多个 go 二进制路径且旧版本路径优先级更高所致;需检查并修正 `path` 顺序,或统一使用 homebrew 管理版本。
问题根源在于 Shell 的 PATH 环境变量搜索顺序:系统会从左到右查找第一个匹配的 go 可执行文件。在您提供的 .bashrc 中:
export PATH=$PATH:/usr/local/go/bin
该行将 /usr/local/go/bin 追加到了 PATH 末尾,而非开头。如果此前 PATH 中已包含其他 Go 安装路径(例如 /usr/local/bin 中残留的旧版 go,或通过 MacPorts、旧版安装包写入的路径),Shell 将优先使用靠前位置的旧版 go,导致 go version 始终输出 1.7.5。
✅ 正确做法是将新版 Go 的 bin 目录前置到 PATH 最前面,确保其优先被识别:
# 修改 .bashrc(或 .zshrc,macOS Catalina 及以后默认使用 zsh) export GOPATH=$HOME/Go export PATH=/usr/local/go/bin:$PATH # 注意:/usr/local/go/bin 在 $PATH 前面!
修改后,重新加载配置并验证:
source ~/.bashrc # 或 source ~/.zshrc go version # 应输出 go version go1.8.x darwin/amd64 which go # 应返回 /usr/local/go/bin/go
⚠️ 补充注意事项:
- 检查是否存在其他干扰路径:运行
echo $PATH,确认/usr/local/go/bin是否出现在/usr/bin、/usr/local/bin等可能含旧版go的路径之前; - 若曾用 Homebrew 安装过 Go(如
brew install go),它默认将/usr/local/bin(含go符号链接)加入 PATH —— 此时建议统一使用 Homebrew 管理,避免混用多种安装方式:brew update && brew upgrade go # 升级至最新稳定版 brew unlink go && brew link go # 确保符号链接正确
- WebStorm 能识别 1.8 是因为其独立配置了 SDK 路径(如
/usr/local/go),不受 Shell PATH 影响,这进一步印证问题仅出在终端环境配置。
? 总结:Go 版本切换本质是 PATH 优先级问题。始终将目标 Go 安装目录的 bin 子路径置于 PATH 开头,并避免多版本共存路径冲突,即可彻底解决终端版本滞后问题。

















