应根据当前Shell类型选择配置文件:若echo $SHELL输出/bin/bash则改~/.bashrc或更稳妥的~/.profile;输出/bin/zsh则必须改~/.zshrc;Ubuntu图形登录时自动读取~/.profile,而~/.bashrc仅新开终端加载。

直接改 ~/.profile 还是 ~/.bashrc?看 shell 类型
Ubuntu 默认用 bash,但新版本(20.04+)可能默认用 zsh。先确认当前 shell:
echo $SHELL
输出 /bin/bash 就改 ~/.profile 或 ~/.bashrc;输出 /bin/zsh 就该改 ~/.zshrc。别硬套教程——改错文件,source 也没用。
多数情况下,~/.profile 更稳妥,因为 Ubuntu 图形登录时会自动读它;而 ~/.bashrc 只在新开终端时加载,SSH 登录或某些 IDE 内置终端可能不触发。
GOROOT 和 GOPATH 必须显式声明,不能靠默认
Go 安装后不会自动写环境变量,go version 能运行只说明 $GOROOT/bin 已在 PATH 中(比如你用 .deb 包安装),但 GOPATH 仍为空,这会导致 go mod init 报错或依赖下载到系统临时目录。
立即学习“go语言免费学习笔记(深入)”;
在 ~/.profile 末尾添加这三行(注意空格不能用中文全角,等号前后**不能有空格**):
export GOROOT="/usr/local/go" export GOPATH="$HOME/Go" export PATH="$PATH:$GOROOT/bin:$GOPATH/bin"
常见错误:
-
export GOPATH=$HOME/Go—— 缺少双引号,路径含空格时崩 -
export PATH=$PATH:$GOROOT/bin—— 漏掉$GOPATH/bin,导致go install生成的二进制找不到 - 把
export写成set或let—— bash 不认
改完必须 source 或重新登录才生效
编辑保存后,运行:
source ~/.profile
然后立刻验证:
go env GOROOT go env GOPATH echo $PATH | grep go
如果前两行输出为空,说明变量没加载成功;第三行没出现 /usr/local/go/bin 或 /home/xxx/Go/bin,说明 PATH 拼接失败。这时候别猜,直接检查 ~/.profile 里有没有拼写错误、是否用了中文标点、是否漏了 export 关键字。
注意:source 只影响当前终端会话。新开终端、VS Code 内置终端、远程 SSH 连接都需各自 source 或重启 shell。图形界面登录用户要彻底生效,注销再登录最可靠。
Go Modules 时代,GOPATH 的作用变小但不可删
虽然现在项目可以脱离 GOPATH/src 目录结构(go mod init example.com/foo 即可),但以下场景仍强依赖 GOPATH:
-
go get下载的可执行工具(如gopls、dlv)默认装进$GOPATH/bin -
go install命令不带-o时,输出路径就是$GOPATH/bin - VS Code Go 扩展默认从
$GOPATH/bin查找gopls,否则提示 “tool not installed”
所以即使你所有项目都用 go mod,GOPATH 仍得设,且建议保持为独立路径(如 $HOME/Go),别和项目目录混在一起——否则 go clean -cache 可能误删代码。


















