GOPATH可以设置多个工程目录,linux下用冒号分隔(必须用冒号,fish shell的空格分割会出错),windows下用分号分隔,但是go get 只会下载pkg到第一个目录,但是编译的时候会搜索所有的目录。
在fish shell下,使用 set -x GOPATH PATH1:PATH2:PATH3 来设置,不能使用 set -x GOPATH PATH1 PATH2 PATH3, 这一点确实很特殊。
fish shell 下还有另外一种自动方法,利用fish shell的function:
1、先用 set -x default_GOPATH
go/default/gopath 来设置一个默认的gopath
2、然后新建一个cd函数,位于 ~/.config/fish/functions/cd.fish:
function cd builtin cd $argv set cdir (pwd) while [ "$cdir" != "/" ] if [ -e "$cdir/.gopath" ] set -x GOPATH $default_GOPATH:$cdir return 0 end set cdir (dirname "$cdir") end set -x GOPATH $default_GOPATH return 0 end
但是这种方法并不推荐,因为有些时候切换目录不一定用到cd命令。
另外,查看go的全部环境变量可以使用 go env 命令,看看自己设置的对不对。