更改Go的默认安装位置

将 Go 的默认工作 Go 目录从 $HOME/go 改为 $HOME/.go ,这个行为由环境变量 GOPATH 控制

核心原理:GOPATH 与现代 Go 的关系

自 Go 1.11 引入 Go Modules 后,项目源码不再强制依赖 GOPATH/src,但以下内容仍受 GOPATH 影响:

路径用途是否受 GOPATH 影响
$GOPATH/bingo install 安装的可执行文件✅ 是
$GOPATH/pkg/modModule 缓存(Go 1.16+ 由 GOMODCACHE 控制)⚠️ 部分
$GOPATH/src传统 GOPATH 模式源码❌ Modules 模式下基本不用

因此,修改 GOPATH 主要影响二进制安装路径和部分缓存位置,不影响已启用 modules 的项目构建

迁移步骤(Fedora 环境)

1. 设置环境变量

~/.bashrc~/.zshrc 中添加:

1
2
3
4
5
# Go workspace 配置
export GOPATH="$HOME/.go"
export GOBIN="$GOPATH/bin"          # 显式指定二进制安装目录
export GOMODCACHE="$GOPATH/pkg/mod" # 可选:统一 module 缓存位置
export PATH="$GOBIN:$PATH"          # 确保安装的工具可直接执行

💡 提示:Fedora 默认使用 Bash,建议修改 ~/.bashrc;若使用 Zsh 则改 ~/.zshrc

使配置生效:

1
source ~/.bashrc  # 或 source ~/.zshrc

2. 迁移现有数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 创建新目录结构
mkdir -p ~/.go/{bin,pkg,src}

# 迁移已有内容(保留原目录作为备份)
mv ~/go/bin/* ~/.go/bin/ 2>/dev/null || true
mv ~/go/pkg/* ~/.go/pkg/ 2>/dev/null || true
mv ~/go/src/* ~/.go/src/ 2>/dev/null || true

# 验证后可删除原目录
# rm -rf ~/go

3. 验证配置

1
2
3
4
5
go env GOPATH GOBIN GOMODCACHE
# 应输出:
# /home/yourname/.go
# /home/yourname/.go/bin
# /home/yourname/.go/pkg/mod

测试安装一个工具验证路径:

1
2
3
go install golang.org/dl/go1.21@latest
which go1.21
# 应返回:/home/yourname/.go/bin/go1.21
Licensed under CC BY-NC-SA 4.0
最后更新于 2026年2月13日星期五
使用 Hugo 构建
主题 StackJimmy 设计