安装go-eval后出现错误"command not found"



我正在尝试以交互模式运行Go

我想为此使用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)

您需要

GOPATH/bin添加到PATH

PATH="$GOPATH/bin:$PATH"

更新 [Go 1.8 及以上版本]:GOPATH将默认为 $HOME/go 。如果未显式设置GOPATH则上述方法将不起作用

要同时设置两者,请将以下内容添加到.profile文件中:

export GOPATH="$HOME/go"
PATH="$GOPATH/bin:$PATH"
  1. 将这些行添加到~/.zshrc

    export GOPATH="$HOME/go"
    export PATH=$PATH:$GOPATH/bin
    
  2. 运行source ~/.zshrc

二进制

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

go get & go install installs在$GOPATH/bin中提供二进制文件(如果有的话)

检查$GOPATH/bin是否有 go-eval 二进制文件。如果在那里,请尝试使用 ./go-eval$GOPATH/bin 运行它。如果这行得通,你就很好。

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

export PATH=$PATH:$GOPATH/bin

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

当运行go安装go-eval时,我得到:

无法加载包:包

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

在使用 export PATH="~/go/bin:$PATH" 时遇到了这个问题。

似乎~引起了问题,并且更改为完整路径有效。

尝试这样的事情,它不会使用波浪号:

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

除了给出的答案之外,我还想添加这个。

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

如:哪去

如果未找到该命令,则表明您有需要先解决的 PATH 问题。

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

如:查找/-名称"go"-打印2>/dev/null

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

使用此过程可帮助您快速找到有问题的命令,然后您可以将其添加到 PATH env 变量中,并且可以访问它,如其他答案中所述。

以上所有答案都是不言自明的。除此之外,我还想补充一点,默认情况下,您只能从终端访问那些没有二进制路径的命令,其bin文件夹已添加到环境变量中,无论是 linux、mac 还是 windows。

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

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

因此,将以下内容写入终端的rcprofile文件中并保存,例如对于 zsh 它是~/.zshrc,对于 bash 它是 ~/.bash_profile~/.bash_rc .

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

现在,虽然文件已保存,但更改不会立即反映。您必须如上所述获取配置文件。对于此类型source ~/.zshrc .您现在应该能够直接从命令行运行该命令。即使问题仍然存在,请尝试退出终端会话并注销然后登录。

如果要

为其他包添加 bin 文件夹的路径,可以使用 : 将其附加到$PATH环境变量中。因此,例如,如果您还想向java二进制文件添加路径,那么只需执行

export PATH=$PATH:$JAVA_HOME/bin
此外,最好在其

单独的环境变量中定义包的根文件夹的路径(示例 $GOPATH="$HOME/go" )。如果将来安装路径发生变化,那么您只需要更新与该二进制文件相关的环境变量(示例只需更新,$GOPATH="newpath"),您的命令将像以前一样工作,因为$GOPATH中的更改将反映在$PATH中。

最新更新