Bash $GOPATH安装json2csv时出错

Bash $GOPATH安装json2csv时出错,bash,go,Bash,Go,我正在运行Linux 3.16.0-4-amd64 x86_64。 我想安装json2csv 我尝试: sudo go get github.com/jehiah/json2csv 并获得: package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help gopath go已安装: GOARCH="amd64" GOBIN="" GOCHAR="6" G

我正在运行Linux 3.16.0-4-amd64 x86_64。 我想安装json2csv

我尝试:

sudo  go get github.com/jehiah/json2csv
并获得:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help gopath
go已安装:

GOARCH="amd64" 
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64" 
CC="gcc" 
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++" 
CGO_ENABLED="1"
我设定:

export GOROOT=/usr/bin/go
export GOPATH=$HOME/projects/go
但我还是犯了同样的错误


有什么想法吗?

原因是您在使用
sudo
时丢失了一些ENV
您可以使用
-E
来保存它

您可以在这里查看:

但是你应该不要使用sudo去获取

顺便说一下,您可以将env保存在
.bash\u profile
中,这样它就可以自动加载


在这种情况下,您应该使用

export GOROOT=/usr/local/go
export GOPATH=$HOME/projects/go
请注意,
GOROOT
是go的文件夹,而不是go的二进制文件

那么,不要sudo了

go get github.com/jehiah/json2csv

永远不要去拿。从未。另外:永远不要设置GOROOT(除非您知道自己在做什么)。不仅不应该设置GOROOT,而且对于GOROOT来说这不是一个有效的值。PATH、GOPATH等环境变量应该始终在配置文件中,而不是在rc文件中。@JimB谢谢,这样做是一个好习惯,更新了我的答案。那么这种情况下的解决方案是什么?@xxxvinxxx我再次更新了我的答案,实际上,没有sudo的go get应该可以。正如上面的评论所述,不要设置GOROOT(并且/usr/bin/go绝对不是GOROOT的值)