我在使用 golang 和 Makefile(在 Fedora 33 上)时遇到了一个很奇怪的问题。 我的 Makefile 包含:
run:
go run main.go
它应该只向控制台打印“Hello”。当我运行 make run
时出现此错误:
go run main.go
make: go: Permission denied
make: *** [Makefile:5: run] Error 127
但是,如果我将 Makefile 更改为
run:
/usr/bin/go run main.go
它工作得很好!
信息
输出:
$ which go
/usr/bin/go
$ go version
go version go1.15.5 linux/amd64
$ uname -a
Linux localhost.localdomain 5.9.10-200.fc33.x86_64 #1 SMP Mon Nov 23 18:12:50 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
有人可以帮我解决这个问题吗?如果您需要更多信息,请告诉我!
谢谢!
编辑
控制台
$ echo ${PATH}
/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/home/olena/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin
make
的输出
echo /usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/home/olena/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin
/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/home/olena/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin
go run main.go
make: go: Permission denied
make: *** [Makefile:6: run] Error 127
在/usr/bin
$ ll | grep go
lrwxrwxrwx. 1 root root 20 Nov 14 09:32 go -> /etc/alternatives/go
在/etc/alternatives
$ ll | grep go
lrwxrwxrwx. 1 root root 22 Nov 29 15:16 go -> /usr/lib/golang/bin/go
最佳答案
我遇到了和你一样的问题,终于弄清楚我的问题是什么。也许这对您有用,尤其是当您将 zsh 与 omz 结合使用时。
在我的例子中,$PATH 中定义的位置之一包含一个名为 go 的文件夹。该位置在 go
二进制文件所在位置之前。一旦我将该位置放在二进制文件位置之后,一切正常。
我相信这可能与 omz 以及它的 shell 函数如何允许您进入文件夹有关。
关于go - Makefile执行: permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65092584/