GOROOT
golang安装路径。
GOPATH
GOPATH可以设置多个工程目录,linux下用冒号分隔(必须用冒号,fish shell的空格分割会出错),windows下用分号分隔,但是go get 只会下载pkg到第一个目录,但是编译的时候会搜索所有的目录。
在fish shell下,使用 set -x GOPATH PATH1:PATH2:PATH3 来设置,不能使用 set -x GOPATH PATH1 PATH2 PATH3, 这一点确实很特殊。
具体用途:go命令常常需要用到的,如go run,go install, go get等。允许设置多个路径,和各个系统环境多路径设置一样,windows用“;”,linux(mac)用“:”分隔。
当存在多个路径时,会优先采用第一个路径。
GOBIN
go install编译存放路径。不允许设置多个路径。可以不设置(而且建议不设置。注意 不设置不是说设置为空, export GOBIN= 就是设置为空,不建议这么做, fish shell 的 set -x GOBIN 也是设置为空。为了保险起见,推荐直接显式的使用 unset GOBIN 或 set -e GOBIN 来删除环境变量,前面的unset是bash命令,后面的set -e是 fish shell的)。为空时则遵循“约定优于配置”原则,可执行文件放在各自GOPATH目录的bin文件夹中(前提是:package main的main函数文件不能直接放到GOPATH的src下面)。但是,即便不设置 GOBIN,为了运行 go get 安装的插件,你还需要将各个 ${GOPATH}/bin 均加入到 PATH 里去。
下面是我自己的设置示例(fish shell):
# hzh add for golangset -e GOBIN
set -x GOROOT /home/hzh/soft/golang
set -l GOPATH1 /home/hzh/develop/gopath
set -l GOPATH2 /home/hzh/develop/goproj
set -x GOPATH {$GOPATH1}:{$GOPATH2}
set -x PATH {$GOROOT}/bin {$GOPATH1}/bin {$GOPATH2}/bin {$PATH}