我正在尝试以交互模式运行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"
-
将这些行添加到
~/.zshrc
export GOPATH="$HOME/go" export PATH=$PATH:$GOPATH/bin
-
运行
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
.
这是您无法直接从命令行执行该命令的最常见原因。请记住这一点,并在在线搜索答案之前尝试此操作,因为这很可能会解决您的问题。您所需要知道的只是安装路径。
因此,将以下内容写入终端的rc
或profile
文件中并保存,例如对于 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中。