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
你是否将此路径添加到了 $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 中
所以按照说明,我创建了目录“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 目录。
因此,请确保 GOBIN 在 PATH 环境变量中,最通用的方法如上所述。
请注意,这仅对当前 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 中,而是应该添加包含该可执行文件的目录路径。
在你的情况下,问题可能出在两个方面:
$PATH环境变量配置错误。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配置是否正确。
按照这些步骤操作,应该能解决你的问题。


