使用Golang错误“找不到命令”

问题描述 投票:9回答:3

我试图以交互模式运行golang

我想使用go-eval,我遵循README说明:

  • 我成功地跑了go get github.com/sbinet/go-eval/
  • 我跑go-eval导致-bash: go-eval: command not found

更多信息:

  • echo $PATH回归:/usr/local/go/bin:...
  • echo $GOPATH回归:$HOME/golang
  • 运行whereis go-eval不返回任何输出
  • 运行go install go-eval返回: can't load package: package go-eval: cannot find package "go-eval" in any of: /usr/local/go/src/go-eval (from $GOROOT) $HOME/golang/src/go-eval (from $GOPATH)
macos go
3个回答
24
投票

您需要将GOPATH / bin添加到PATH。

PATH="$GOPATH/bin:$PATH"

更新:Starting with Go 1.8,如果没有设置,GOPATH默认为$HOME/go。如果未明确设置GOPATH,则上述操作无效。

要同时设置它们,请将其添加到.profile:

export GOPATH="$HOME/go"
PATH="$GOPATH/bin:$PATH"

4
投票

go-eval中的二进制$GOPATH/bin?您是否使用$GOPATH/bin/作为工作目录运行命令?如果没有,那可能就是问题所在。

go getgo install$GOPATH/bin中安装二进制文件(如果有的话)

检查$GOPATH/bin的go-eval二进制文件。如果它在那里,尝试从$GOPATH/bin./go-eval运行它。如果这样有效,那你很好。

将来,如果您希望从shell中的任何位置运行$GOPATH/bin中的二进制文件,请将以下内容添加到.bashrc或配置文件中:

export PATH=$PATH:$GOPATH/bin

然后重新启动终端或运行. ~/.bashrc. /etc/profile

运行go install go-eval时我得到:

无法加载包:package go-eval:在以下任何一个中找不到包“go-eval”:/ usr / local / go / src / go-eval(来自$ GOROOT)$ HOME / golang / src / go-eval (来自$ GOPATH)

您得到上述错误,因为go-eval不在$HOME/golang/src/go-eval中。运行go get github.com/sbinet/go-eval/会将源代码下载到$GOPATH/src/github/sbinet/go-eval/。如果要运行go install go-eval,则必须在$GOPATH/src中指定与其在目录层次结构中的位置相关的包名称。

例如go install github/sbinet/go-eval


2
投票

除了给出的答案之外,我还想补充一下。

作为一个有用的提示,您始终可以使用which命令测试命令。

如:哪个去

如果找不到该命令,则表示您首先需要解决PATH问题。

然后,您可以专注于使用find命令查找命令。

如:find / -name“go”-print 2> / dev / null

第一个斜杠是开始搜索的目录,-name的参数是你要查找的命令,-print获得了良好的结果。 2> / dev / null发送neverland(null)无法访问的目录结果,因此您不需要查看一堆错误。

使用此过程可帮助您快速找到有问题的命令,然后将其添加到PATH env变量中,并且可以按照其他答案中的说明进行访问。

© www.soinside.com 2019 - 2024. All rights reserved.