我试图以交互模式运行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)
答案 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
。
这是最常见的原因,您无法直接从命令行执行该命令。请记住这一点,并尝试此操作,然后再在线搜索答案,因为这很可能会解决您的问题。您只需要知道安装路径即可。
因此,将以下内容写入终端的rc
或profile
文件中并保存,例如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"