fish shell 下golang的gopath的设置问题

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 命令,看看自己设置的对不对。

 

posted @ 2018-04-15 12:04  微信公众号--共鸣圈  阅读(584)  评论(0编辑  收藏  举报