尽管设置了GOPATH,但是echo $ GOPATH不返回任何内容

时间:2019-01-25 21:17:18

标签: go

我有这个奇怪的问题。

运行go env时,我得到以下信息:

GOARCH="amd64"
GOBIN=""
GOCACHE="/home/ethanc/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/ethanc/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/ethanc/marketstore/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build154822748=/tmp/go-build -gno-record-gcc-switches"

但是,当我运行echo $GOPATH时,会得到一个空的新行。当我尝试将它们传递给其他所有GO环境值时,也会发生这种情况: Empty GOPATH result

这没有意义,因为当我尝试打印其他路径变量(例如echo $HOME)时,我得到了正确的值:

/home/ethanc

有人知道为什么我回显GOPATH时只返回新行吗?

3 个答案:

答案 0 :(得分:3)

这是GOPATH的default value

因为它从未设置过,所以go将使用它的合理默认值。

当然,主要征服对象是共享此$ GOPATH的所有go项目。

答案 1 :(得分:1)

感谢@DonSimon(https://stackoverflow.com/users/10453847/don-simon)向我指出正确的方向。

因此,在正确设置go环境变量后,go env返回了正确的env。变量,它没有在我的bash shell中设置。

我刚刚遵循了在我的终端机enter link description here

中自动设置GOPATH的说明。

具体来说,我这样做是因为我没有.bash_profile

  1. vi ~/.bashrc
  2. 在代码底部添加了以下代码行:export GOPATH=$HOME/go

答案 2 :(得分:0)

我认为您可以在 ~/.profile~/.bashrc 中添加 GOPATH

  • 当您将 bash 作为交互式 shell 启动时(即,不运行脚本),它读取 ~/.bashrc

  • 当作为登录shell调用时,它 只读取 ~/.bash_profile~/.profile。 了解更多 外壳之间的区别,请阅读此post

在此处附上我的 ~/.profile 中的内容

export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$HOME/go/bin