“go: command not found”主因是GOROOT未加入PATH或配置未生效;需检查PATH、GOROOT,重载shell配置,用户级安装推荐$HOME/local/go,GOPROXY应设为https://goproxy.cn,direct。

go 命令找不到?先确认 GOROOT 和 PATH 是否生效
绝大多数“go: command not found”问题,不是没装,而是 GOROOT 路径没加进 PATH,或者 shell 没重新加载配置。安装完别急着跑程序,先验证环境变量是否真被系统读取。
- 执行
echo $PATH,看输出里有没有/usr/local/go/bin(Linux/macOS)或C:\Go\bin(Windows) - 执行
go env GOROOT,如果报错或返回空,说明GOROOT没设,或设了但没生效 - Linux/macOS 下改了
/etc/profile或~/.bashrc后,必须运行source ~/.bashrc;改/etc/profile后新终端才生效,旧终端不自动更新 - Windows 用户注意:修改系统环境变量后,已打开的 cmd/PowerShell 窗口不会自动刷新,必须关掉重开
普通用户能装 Go 吗?可以,但别碰 /usr/local
用 sudo tar -C /usr/local 解压是常见做法,但它要求 root 权限,且影响所有用户。如果你没有管理员权限,或想避免和系统其他用户冲突,就该走用户级路径。
- 推荐解压到
$HOME/local/go,然后在~/.bashrc(或~/.zshrc)里设GOROOT=$HOME/local/go -
GOPATH默认是$HOME/go,无需额外创建目录,go mod init会自动建go.mod,go build生成的二进制默认放当前目录 - 别把
GOBIN单独设成/usr/local/bin——普通用户没写入权限,会导致go install失败并报permission denied - 如果真需要全局可执行,用
go install时加-o $HOME/bin/mytool显式指定输出路径,再把$HOME/bin加进PATH
go run 和 go build 权限失败?检查当前目录和文件所有权
go run main.go 报 permission denied,往往不是 Go 的问题,而是当前目录或 .go 文件本身权限不对,尤其从压缩包解压、或通过挂载共享盘复制来的文件。
- 执行
ls -l main.go,确认文件可读(至少有r权限),否则go工具读不到源码 - 执行
pwd看当前路径是否在可写目录下;如果在/tmp或/root下,普通用户可能无权写临时编译产物 - 常见陷阱:从 Windows 复制过来的文件,可能带 NTFS ACL 或只读属性,在 Linux/macOS 上表现为
-r--r--r--,需手动chmod +x不起作用,要用chmod 644 main.go -
go build生成的二进制默认权限是-rwxr-xr-x,但如果目标目录不可写(比如/usr/local),它会直接失败,而不是静默跳过
模块代理和 GOPROXY 设置不当会导致超时或 403
国内用户不配代理,go mod download 很容易卡在 proxy.golang.org,甚至返回 403 Forbidden,这不是网络断了,是代理策略拦截了请求。
立即学习“go语言免费学习笔记(深入)”;
- 运行
go env -w GOPROXY=https://goproxy.cn,direct是最稳妥的国内方案,direct表示对私有模块回源 - 别设成单个地址如
https://goproxy.io——这个域名已停服,会持续超时 - 如果公司内网有私有 registry,需同时设
GOINSECURE=your-internal-domain.com,否则go mod拒绝走 HTTP - 执行
go env GOPROXY验证是否写入成功;若显示空,说明没加-w参数,只是临时生效
go env 和 ls -l 看一眼,比反复重装快得多。


















