只需将$GOROOT/bin和$GOPATH/bin加入PATH;GOROOT是Go安装根目录,GOPATH是工作区路径,go install的工具如gofmt、dlv需通过PATH调用,否则报command not found。
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装完也无法直接运行PATH的写法(Shell配置文件选哪个?)取决于你用的she

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
PATH?注册表还是用户环境变量?优先用「系统属性 → 高级 → 环境变量」图形界面添加用户变量,比PowerShell命令更稳妥。PowerShell临时设置($env:PATH += ";C:\go\bin")只对当前会话有效,关窗就丢。
GOROOT = C:\go,GOPATH = %USERPROFILE%\go
PATH变量末尾追加:%GOROOT%\bin;%GOPATH%\bin
PATH
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 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都报错。