上一篇写的比较简单,这里介绍下Go常用的一些环境变量。
执行go env
后可以看到当前go使用的环境变量:
GOROOT
就是go命令所在的路径,默认值是/usr/local/go/bin,其中/usr/local/go下面还有一些go自带的官方包。GOPATH
是个历史遗留问题,等go的包管理工具再完善下就废弃了,但现在先配上,还有用,go mod的缓存默认会放在这个路径下。我一般习惯把它定义到$HOME/Workspace
下,可根据你自己的需要修改。GOBIN
一般用来存放一些第三方的、go相关的可执行文件,比如你用vscode的话,就需要下一堆东西放在这个目录下。或者在你自己的项目里执行go install
命令的话,也会默认把编译后的可执行文件放在这。PATH=$PATH:$GOROOT:$GOBIN
这个就是把有可执行文件的目录GOROOT
和GOBIN
追加到系统环境变量$PATH
里,在命令行输入命令后,操作系统可以去这里面搜索。GO111MODULE
意思是是否对项目启用go mod来管理依赖,这个建议设置成auto,最好是设置成on,毕竟go mod是趋势。GOPROXY
因为go的很多包都在github上,还有些依赖在golang.org上,国内build的时候基本下不下来,所以需要配置一个代理,现在用的比较多的是 https://goproxy.io/zh/,配置下GOPROXY
即可正常拉取。GOPRIVATE
一些同学项目里肯定引用了自己公司的gitlab私有仓库,所以还需要配下GOPRIVATE
,表示拉取私有仓库时不走GOPROXY
配置的代理。
以上环境变量可以在两个地方去定义:
- shell的预加载文件(一般为
~/.bashrc
,使用zsh的用户为~/.zshrc
) - go专门的环境变量配置文件,具体文件位置可通过命令
go env GOENV
查看。可通过
go env -w key=value
命令直接修改该文件
以下是我自己~/.bashrc里追加的配置
# 比较通用的配置
export GOROOT=/usr/local/go/bin
export GOPATH=$HOME/Workspace
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT:$GOBIN
# 这几个配置放在这或者使用`go env -w k=v`都可以
export GO111MODULE=auto
export GOPROXY="https://goproxy.io,direct"
# export GOPRIVATE=git.hello.com
如果遇到使用go get
私有仓库报错或者go build时不能正常拉取私有仓库,还需要做如下配置
编辑~/.gitconfig
文件,新增以下内容,注意将git.hello.com换成你实际使用的git仓库地址。
[url "ssh://git.hello.com/"]
insteadOf = https://git.hello.com/