多版本go冲突问题

发布于:2025-04-13 ⋅ 阅读:(21) ⋅ 点赞:(0)

今天执行go build时遇到一个报错:
compile: version “go1.22.7 (Red Hat 1.22.7-1.module+el8.10.0+700+fd5cfc7a)” does not match go tool version “go1.23.4”

结果一查 which -a go 发现
go: /usr/bin/go /usr/lib/golang/bin/go /codev/opt/golang/1.19.2/bin/go
当前系统居然有四个不同的位置都安装了go

于是先看go version,
go version go1.22.7 (Red Hat 1.22.7-1.module+el8.10.0+700+fd5cfc7a) linux/amd64
也就是说当前生效的版本是22的这个

然后查看 which go
查看当前环境配置的go的位置
/usr/lib/golang/bin/go

然后查看 go env GOROOT
/usr/lib/golang
这里补充下,go env中几个重要变量的含义
GOROOT:Go 的安装路径(如 /usr/local/go 或 /usr/lib/golang)
GOPATH:Go 的工作目录(存放第三方库和编译结果)
GOOS 和 GOARCH:当前系统的操作系统和架构
GOPROXY:Go 模块的代理地址(如 https://proxy.golang.org)

查看系统的环境变量
echo $变量名
例如:
echo $PATH
echo $GOPATH

对比 Windows 的等效操作
~/.bashrc 当前用户:相当于用户变量(波浪符含义:表示当前用户的家目录 Home Directory,自动适配不同用户的家目录,无需硬编码路径如 /home/alice 或 /home/bob)
/etc/environment 所有用户:相当于系统变量

Windows 操作 Linux 等效操作
右键“此电脑” > 属性 > 高级系统设置 > 环境变量 编辑 ~/.bashrc 或 /etc/environment
查看变量:echo %变量名% echo $变量名

那么怎么查看~/.bashrc文件呢
cat ~/.bashrc

怎么添加和修改~/.bashrc呢
vim ~/.bashrc

vim怎么使用呢
Vim 有 3 种模式
Normal(普通模式): 启动默认模式,或者按 Esc进入
Insert(插入模式): 在 Normal 模式下按 i 进入
Command(命令模式): 在 Normal 模式下按 : 并跟上命令符
普通模式下可以做的操作
HJKL : 分别是左 / 下 / 上 / 右
X:表示删除
常用的命令符:
:q 退出(如果未修改)
:q! 强制退出(不保存修改)
:w 保存文件
:wq 保存并退出

怎么让修改后的~/.bashrc立即生效呢
source ~/.bashrc

在 Linux 中,~/.bashrc 文件中配置的环境变量(包括 PATH)直接影响当前用户的环境设置。以下是关于 PATH 变量的详细说明及操作方法:
~/.bashrc 与 PATH 的关系
~/.bashrc 是用户级的 Shell 配置文件,每次打开终端时都会自动加载。
在该文件中设置的 PATH 变量会覆盖系统默认路径,或在其基础上追加新路径。
在这里插入图片描述

作用范围:仅对当前用户生效(系统级配置通常在 /etc/environment 或 /etc/profile 中)。

在文件末尾添加(示例:将 /usr/local/custom/bin 加入 PATHexport PATH="/usr/local/custom/bin:$PATH"  # 添加到最前面(优先级高)export PATH="$PATH:/usr/local/custom/bin"  # 添加到最后面(优先级低)