我试图在我的.go文件上运行安装但是,它似乎失败了。它失败,因为我没有设置我的GOBIN环境变量。但是,当我回应它时,我确实得到了它的设置,因为我的.bashrc和.bash_profile文件确保它的设置。但是,它没有在环境中设置。出于某种原因,当实际设置时,go无法识别它的设置。
但是,如果我在shell上手动设置为:
me$ export GOBIN=$GOBIN
现在去env决定识别它,虽然我的.bashrc文件中有明确的行导出它,但我的回声确认了它的设置。有人知道为什么去表演很奇怪吗?
我尝试过的事情/参考
我的操作系统
mac osx mavericks。
GO VERSION
- 我去的版本是去版本go1.2 darwin / 386。我跑的时候
go version
我明白了:
go version go1.2 darwin/386
env识别的内容和环境变量
正在运行
go env
显示在我的终端中:
GOARCH="386"
GOBIN=""
GOCHAR="8"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_386"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread -fno-common"
CXX="g++"
CGO_ENABLED="1"
.bashrc和.bash_profile的外观如何
我在.bash_profile中搜索我的.bashrc文件。即这里是我的.bash_profile中的这段代码:
if [ -f ~/.bashrc ]; then
source ~/.bashrc #executes for bash subshells
fi
我还尝试手动(通过手动我的意思是在bash中明确地将其作为人类输入)源我的.bash_profile(因为那将运行我的.bashrc文件)并且env仍然无法识别它。
只有当我真正输入我的shell
时me$ export GOBIN=$GOBIN
确实会返回我想要的内容:
GOARCH="386"
GOBIN="/Users/brando90/go/bin"
GOCHAR="8"
GOEXE=""
GOHOSTARCH="386"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_386"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32 -pthread -fno-common"
CXX="g++"
CGO_ENABLED="1"
答案 0 :(得分:3)
在相关的shell配置文件中尝试此操作:
export GOPATH=/path/to/your/go/workspace
export PATH=$GOPATH/bin:$PATH
不要设置GOBIN
,因为它对99%的情况都没用(即单用户计算机; see the cmd docs)。完成这些更改后,请务必unset GOBIN
。
Go将知道安装二进制文件的位置,因为GOPATH/{bin, pkg, src}
是Go处理的东西。另一方面,您的shell需要知道将$GOPATH/bin
添加到路径中,以便您可以直接运行Go二进制文件。
答案 1 :(得分:3)
当其他人来看我的问题时,我想确保将来参考,他们知道问题是什么以及我如何解决它。
我的bash文件存在的问题之一是其中一个以下列方式导出:
export $GOBIN
而不是
export GOBIN
第二个是不正确的,当我这样做时修复了:
export GOBIN="$GOPATH/bin"
所以不起作用的原因是因为我的错误。但是,我总体上还学到了一些其他的东西。我了解到,当一个人进行安装"时,我们实际上并不需要为我的Unix环境变量设置GOBIN。当GOPATH变量设置正确时,当某人对某事做go install
时,Go 知道 bin目录存在为GOPATH / bin。所以正确设置的重要一点是GOPATH而不是GOBIN。
正如elithrar前面提到的,如果你希望你的shell能够从你在go工作区中创建的编译文件中运行命令,你需要在你的PATH环境变量中加入GOPATH / bin。
感谢大家的帮助!
答案 2 :(得分:2)
尝试将export
行放在.bash_profile
而不是.bashrc
。
我读过终端总是将bash作为登录会话运行,因此会.bash_profile
,而不是.bashrc
。