找不到错误"命令"与Golang

时间:2016-03-18 11:46:23

标签: macos go

我试图以交互模式运行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)

5 个答案:

答案 0 :(得分: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"

答案 1 :(得分:4)

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

go get& go 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中的目录层次结构中指定与其位置相关的包名称。

e.g。 go install github/sbinet/go-eval

答案 2 :(得分:2)

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

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

如:哪个

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

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

例如: find / -name" go" -print 2> / dev / null

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

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

答案 3 :(得分:0)

以上所有答案均为自我解释。除了这些,我还要补充一点,默认情况下,您只能从终端访问那些命令,而不能访问二进制文件,这些文件的bin文件夹已添加到环境变量,无论是Linux,Mac还是Windows。

否则,您将必须指定该软件bin文件夹的路径,后跟二进制名称。例如您的情况<path_to_bin_folder>/go-eval

这是最常见的原因,您无法直接从命令行执行该命令。请记住这一点,并尝试此操作,然后再在线搜索答案,因为这很可能会解决您的问题。您只需要知道安装路径即可。

因此,将以下内容写入终端的rcprofile文件中并保存,例如zsh的示例为~/.zshrc,bash的示例为~/.bash_profile或{ {1}}。

~/.bash_rc

现在,尽管文件已保存,但更改不会立即反映出来。您必须如上所述获得源配置文件。对于此类型export GOPATH="$HOME/go" export PATH=$PATH:$GOPATH/bin 。现在,您现在应该可以直接从命令行运行命令。即使问题仍然存在,也请尝试退出终端会话并注销然后再登录。

如果要为其他软件包的bin文件夹添加路径,可以使用source ~/.zshrc将其附加到$ PATH环境变量中。因此,例如,如果您也想向Java二进制文件添加路径,则只需

:

同样好的做法是在单独的环境变量中定义包的根文件夹路径(例如export PATH=$PATH:$JAVA_HOME/bin )。如果将来安装路径发生更改,则只需更新与该二进制文件相关的环境变量(例如,只需更新,$ GOPATH =“ newpath”),您的命令将像以前一样工作,因为$ GOPATH中的更改将反映在$ PATH中。

答案 4 :(得分:0)

使用export PATH="~/go/bin:$PATH"时遇到此问题。

似乎~引起了问题,并更改为可用的完整路径。

尝试使用类似这样的方法,该方法将不使用波浪号:

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