英文:
How to confirm that $GOPATH and $GOROOT are properly set?
问题
这不是重复的问题:
https://stackoverflow.com/questions/7970390/what-should-be-the-values-of-gopath-and-goroot
我不想知道这些值应该是什么。我想知道当我在控制台中输入ls $GOROOT
或ls $GOPATH
时应该看到什么。我相当确定我在大约一年前按照教程设置时弄错了一些东西,我想通过简单检查它们指向的内容是否正确来确认这两个变量是否指向了正确的位置。
这是我现在的情况。看起来$GOROOT
指向了一个不存在的位置。我相当确定它应该指向usr/local/go
,但如果我知道ls $GOROOT
的预期结果是什么,确认起来会容易得多。
至于$GOPATH
,我不太确定我的“工作空间”是指我的所有Go代码,还是只是GitHub的东西,或者可能是我正在工作的特定文件夹。我知道它应该指向我的“工作空间”,但我不知道我要找的那个工作空间是什么样子的。
Sephs-MBP:ThumbzArt seph$ $GOROOT
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: 是一个目录
Sephs-MBP:ThumbzArt seph$ ls $GOROOT
Bman.jpg README.md ThumbzArt.sublime-workspacescripts thumbzart.go
LICENSE.md ThumbzArt.sublime-project public templates ticktock.go
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: 是一个目录
Sephs-MBP:ThumbzArt seph$ ls $GOPATH
- bin p pkg src
Sephs-MBP:ThumbzArt seph$ ls /usr/local/go
AUTHORS CONTRIBUTORS PATENTS VERSION bin doc lib pkg src
CONTRIBUTING.md LICENSE README.md api blog favicon.ico misc robots.txt test
Sephs-MBP:ThumbzArt seph$
我知道这个问题看起来很荒谬,但是对于你没有预期结果的事情很难确认。
谢谢
Sephs-MBP:streak seph$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/seph/code/golang"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Sephs-MBP:streak seph$ go version
go version go1.5.2 darwin/amd64
Sephs-MBP:streak seph$ which go
/usr/local/go/bin/go
英文:
This is not a repeat of this question:
https://stackoverflow.com/questions/7970390/what-should-be-the-values-of-gopath-and-goroot
I don't want to know what the values should be. I want to know what I should see when I type ls $GOROOT
or ls $GOPATH
into console. I'm pretty sure I set things up wrong following a tutorial almost a year ago, and I want to be able to confirm that these two are pointing to where they should be by simply checking that what they point to looks right.
Here's where I am right now. It looks like $GOROOT
is pointing nowhere. I'm pretty sure it should be pointing at usr/local/go
, but it would be a lot easier to confirm if I knew what the expected result of ls $GOROOT
is supposed to be.
As for $GOPATH
I'm not totally sure if my "workspace" is where all my go code is, or maybe just the github stuff, or maybe the particular folder I'm working within. I know it's supposed to point to my "work space," but I don't know what that work space I'm looking for looks like.
Sephs-MBP:ThumbzArt seph$ $GOROOT
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: is a directory
Sephs-MBP:ThumbzArt seph$ ls $GOROOT
Bman.jpg README.md ThumbzArt.sublime-workspacescripts thumbzart.go
LICENSE.md ThumbzArt.sublime-project public templates ticktock.go
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: is a directory
Sephs-MBP:ThumbzArt seph$ ls $GOPATH
- bin p pkg src
Sephs-MBP:ThumbzArt seph$ ls /usr/local/go
AUTHORS CONTRIBUTORS PATENTS VERSION bin doc lib pkg src
CONTRIBUTING.md LICENSE README.md api blog favicon.ico misc robots.txt test
Sephs-MBP:ThumbzArt seph$
I know this question seems ridiculous, but it's hard to confirm things for which you have no expected results.
Thank you
Sephs-MBP:streak seph$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/seph/code/golang"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Sephs-MBP:streak seph$ go version
go version go1.5.2 darwin/amd64
Sephs-MBP:streak seph$ which go
/usr/local/go/bin/go
答案1
得分: -4
编辑:我刚刚偶然发现的另一个非常有用的功能是:go help gopath
。这可能应该是某人的答案。
$GOPATH
指向的文件夹应该像这样:
Sephs-MBP:streak seph$ ls $GOPATH
- bin p pkg src
另一方面,如果你使用ls $GOROOT
和ls $GOPATH
进行比较,$GOROOT
将产生意外的结果。这是因为在这个上下文中没有设置$GOROOT
,我想。
如果你使用go env
,你会看到$GOROOT
的真实情况
Sephs-MBP:streak seph$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/seph/code/golang"
GORACE=""
GOROOT="/usr/local/go" //这是它实际指向的位置
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused- arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
如果你从go env
获取$GOROOT
的结果并执行ls
,你应该看到类似这样的内容:
Sephs-MBP:streak seph$ ls /usr/local/go
AUTHORS CONTRIBUTORS PATENTS VERSION bin doc lib pkg src
CONTRIBUTING.md LICENSE README.md api blog favicon.ico misc robots.txt test
如果所有这些都符合要求,那么你的$GOPATH
和$GOROOT
已经正确设置。
英文:
EDIT: Another very useful feature I just stumbled across is this: go help gopath
. This should have probably been somebodies answer.
The folder $GOPATH
points to should like this:
Sephs-MBP:streak seph$ ls $GOPATH
- bin p pkg src
$GOROOT
, on the other hand, will yield unexpected results if you use ls $GOROOT
as compared to ls $GOPATH
. This is because $GOROOT
is not set within this context, I think.
Sephs-MBP:helloworld seph$ ls $GOROOT
helloworld.go
If you use go env
you'll see the true nature of $GOROOT
Sephs-MBP:streak seph$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/seph/code/golang"
GORACE=""
GOROOT="/usr/local/go" //this is where it actually points
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused- arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
And if you get the result of $GOROOT
from go env
and do ls
you should see something like this:
Sephs-MBP:streak seph$ ls /usr/local/go
AUTHORS CONTRIBUTORS PATENTS VERSION bin doc lib pkg src
CONTRIBUTING.md LICENSE README.md api blog favicon.ico misc robots.txt test
If all of these things check out, then your $GOPATH
and $GOROOT
are properly set.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论