Golang在MacOS下的安装与$PATH环境变量配置

Golang在MacOS下的安装与$PATH环境变量配置 大家好,我是Go语言的新手,对其他语言也不算精通,但我能自己解决一些问题。我希望这个问题很简单,只是我似乎找不到解决办法……

我一直在学习Go语言入门教程,来到了编译并安装应用程序这一页。我成功地用$ go build编译了我的hello.go文件,并用$ ./hello运行了它。但是,当我运行了$ export PATH=$PATH:/path/to/your/install/directory命令,然后再运行$ go install时,却遇到了:

-bash: hello: command not found

我设置的导出路径是$ export PATH=$PATH:/Users/*计算机名*/go/bin/hello,当我执行$ echo PATH时……显示的内容真是一团糟。

有人能帮我指点一下可以尝试哪些方法吗?谢谢。


更多关于Golang在MacOS下的安装与$PATH环境变量配置的实战教程也可以访问 https://www.itying.com/category-94-b0.html

21 回复

你是否将此路径添加到了 $PATH 中?

更多关于Golang在MacOS下的安装与$PATH环境变量配置的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我知道问题出在一些小细节上。再次感谢你的帮助。

/Users/ComputerName/go/bin

这只会影响当前的shell,不会影响你打开的任何其他shell。

func main() {
    fmt.Println("hello world")
}
$ export PATH=$PATH:/Users/ComputerName/go/bin/hello

指示要求运行 $ export PATH=$PATH:/path/to/your/install/directory

不确定为什么,但那个 PATH 并不是一团糟,它只是没有显示你想要添加的条目。

你是如何以及在何处添加导出的?

谢谢。

GOBIN../bin 中,而 PATH../bin/hello

你的 go env GOBIN 输出是什么?

编辑补充:你尝试过按照建议,将路径指向 bin 目录而不是 hello 可执行文件吗?

所以按照说明,我创建了目录“hello”和文件“hello.go”。根据我的理解,我要求它应该指向目录“hello”……?

因此,你应该将其添加到 PATH 环境变量中,最便携的添加正确路径的方式是:

export PATH=${PATH}:$(go env GOBIN)

我已更新了原帖,使其更易于阅读。

根据 Go 的官方说明,您是否建议我应该运行您的命令,而不是遵循他们的说明?原帖中附有官方说明的链接。

问题解决了……或者至少让它按照说明的意图运行了。非常感谢。

你认为如果我运行 $ export PATH=$PATH:/Users/*ComputerName*/go/bin 时没有 ../hello,是不是就不会遇到这个问题了?

Box-O-Rocks:

你认为如果我运行了 $ export PATH=$PATH:/Users/*ComputerName*/go/bin

这正是我的命令会展开成的样子。所以是的,从一开始就使用这个命令不会引起任何问题。

PATH 变量应指向包含二进制文件的文件夹,而不是二进制文件本身。

另外,当你说 echo $PATH 显示一团糟时,请告诉我们具体是什么情况。这可能仍然是预期内的。

func main() {
    fmt.Println("hello world")
}

go install 应将二进制文件复制到 GOBIN 目录。

因此,请确保 GOBINPATH 环境变量中,最通用的方法如上所述。

请注意,这仅对当前 shell 会话有效,并且每次打开新的 shell 时都需要重复此操作,除非您在 shell 的初始化文件中添加等效的行。

在使用我的命令后,结果不应如你所述。

相反,PATH 中的最后一项应与 GOBIN 完全相同。

此外,你可能需要从 GOBIN 中移除 hello 文件夹,因为当 go install 尝试复制 hello 二进制文件时,它会碍事。

按照您的建议操作了。没有成功。

-bash: hello: command not found

根据 Go 的说明,我应该能够运行 $ hello 并让它返回

map[Darrin:Hail, Darrin! Well met! Gladys:Hi, Gladys. Welcome! Samantha:Hail, Samantha! Well met!]

当我执行 $ echo $PATH 时,它返回以下内容…

/Library/Frameworks/Python.framework/Versions/3.10/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS

你好 @Box-O-Rocks,欢迎来到论坛。

这听起来很像 Go 在这里期望一个不同的路径。

尝试运行:

go env GOBIN

并将其与你添加到 $PATH 的路径进行比较。

如果 go env GOBIN 返回为空,则运行:

go env GOPATH

这将返回 Go 本地 pkg 和 bin 目录的父目录。

提示:你可以通过调用以下命令来更改 GOBIN,使其指向你喜欢的目录:

go env -w GOBIN=/your/path/to/custom/gobin

(但我建议先尝试另一种方法,即让 $PATH 匹配当前的 GOBIN。)

首先,go install 命令会将编译好的二进制文件安装到 $GOPATH/bin 目录(如果设置了 $GOPATH)或者 $HOME/go/bin 目录(默认情况)。你不需要手动将单个可执行文件(如 hello)的路径添加到 $PATH 中,而是应该添加包含该可执行文件的目录路径。

在你的情况下,问题可能出在两个方面:

  1. $PATH 环境变量配置错误。
  2. go install 没有将二进制文件安装到预期的目录。

步骤 1:确认 Go 的安装和默认路径

在终端中运行以下命令,检查 Go 的安装情况:

go version

如果 Go 已正确安装,会显示版本号。

接下来,确认 go install 的默认安装目录。运行:

go env GOPATH

这会输出 $GOPATH 的值,通常是 $HOME/go。二进制文件会安装在 $GOPATH/bin 目录下。例如,如果 $GOPATH/Users/你的用户名/go,那么 go install 会将 hello 安装到 /Users/你的用户名/go/bin/hello

步骤 2:正确配置 $PATH 环境变量

你需要将 $GOPATH/bin 目录添加到 $PATH 中,而不是单个可执行文件的路径。打开终端,运行以下命令(假设 $GOPATH/Users/你的用户名/go):

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

或者,如果你使用了自定义的 $GOPATH,则使用:

export PATH=$PATH:$(go env GOPATH)/bin

注意:这只是临时生效,仅在当前终端会话中有效。为了永久生效,你需要将上述命令添加到 shell 的配置文件中(如 ~/.bash_profile~/.zshrc 等)。

例如,对于 macOS 默认的 zsh shell,编辑 ~/.zshrc 文件:

nano ~/.zshrc

在文件末尾添加:

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

保存并退出(按 Ctrl+X,然后按 Y 确认保存)。然后运行:

source ~/.zshrc

使更改生效。

步骤 3:验证 $PATH 配置

运行以下命令检查 $PATH 是否已正确包含 Go 的二进制目录:

echo $PATH

输出应该包含类似 /Users/你的用户名/go/bin 的路径。

步骤 4:重新运行 go install

确保你在包含 hello.go 文件的目录中,然后运行:

go install

这会将 hello 二进制文件安装到 $GOPATH/bin 目录中。

步骤 5:测试安装

现在,你应该可以在任何目录下运行 hello 命令:

hello

如果一切正常,会输出 “Hello, World!”。

示例代码

假设你的 hello.go 文件内容如下:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

在终端中执行:

cd /path/to/hello.go
go install
hello

如果 $PATH 配置正确,hello 命令会成功执行。

常见问题

  • 如果你之前错误地添加了单个文件的路径到 $PATH,可以从 ~/.zshrc~/.bash_profile 中移除错误的行,并按照上述步骤重新配置。
  • 如果 go install 后仍然找不到命令,尝试检查 $GOPATH/bin 目录中是否存在 hello 二进制文件:
    ls $HOME/go/bin
    
    如果文件存在,但命令仍不可用,请确认 $PATH 配置是否正确。

按照这些步骤操作,应该能解决你的问题。

回到顶部