只需将$GOROOT/bin和$GOPATH/bin加入PATH;GOROOT是Go安装根目录,GOPATH是工作区路径,go install的工具如gofmt、dlv需通过PATH调用,否则报command not found。

Go安装后GOPATH和GOROOT要不要手动加到PATH?
不用全加,只加$GOROOT/bin到PATH即可。Go 1.16+ 默认启用GO111MODULE=on,go install生成的二进制会落在$GOPATH/bin,所以这个目录也得加进去——否则像gofmt、dlv这些工具在终端里直接敲命令会报command not found。
-
GOROOT是Go安装根目录(如/usr/local/go),$GOROOT/bin含go、gofmt等官方工具 -
GOPATH是工作区路径(默认$HOME/go),$GOPATH/bin存go install安装的第三方命令 - 不加
$GOPATH/bin,用go install github.com/xxx/cli@latest装完也无法直接运行
Linux/macOS下永久生效PATH的写法(Shell配置文件选哪个?)
取决于你用的shell:bash改~/.bashrc或~/.bash_profile;zsh(macOS Catalina+默认)必须改~/.zshrc。写错文件会导致新开终端不生效。
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- 别漏掉
$PATH:前缀,否则会覆盖原有路径,导致ls、cd等基础命令失效 - 执行
source ~/.zshrc(或对应文件)立即生效,不用重启终端 - 用
echo $PATH确认是否包含/usr/local/go/bin和$HOME/go/bin
Windows上PowerShell怎么设PATH?注册表还是用户环境变量?
优先用「系统属性 → 高级 → 环境变量」图形界面添加用户变量,比PowerShell命令更稳妥。PowerShell临时设置($env:PATH += ";C:\go\bin")只对当前会话有效,关窗就丢。
- 用户变量里新增两行:
GOROOT = C:\go,GOPATH = %USERPROFILE%\go - 在
PATH变量末尾追加:%GOROOT%\bin;%GOPATH%\bin - 修改后需重启所有已打开的PowerShell窗口,旧窗口不会自动更新
PATH - 验证:新开PowerShell,运行
go version和go env GOPATH看是否正常
go env -w能替代PATH设置吗?
不能。go env -w只写Go内部环境变量(如GOPROXY、GOBIN),它**完全不碰系统PATH**。有人误以为go env -w GOPATH=/x/y后就能直接运行$GOPATH/bin下的程序,结果失败——因为Shell根本找不到那个路径。
立即学习“go语言免费学习笔记(深入)”;
-
go env -w GOBIN=$HOME/go/bin只是让go install把二进制放这里,但不等于把它加入PATH - 如果
GOBIN设了非默认值,记得把那个自定义路径加进PATH,而不是依赖go env -w - 运行
go env看到的GOPATH、GOROOT值,和Shell里echo $GOPATH输出可能不一致——后者才是PATH查找时实际用的
/bin、少一个$、配错shell配置文件,都会卡住。最常被忽略的是:改完PATH不验证which go或go version,就直接去写代码,结果go mod init都报错。










