我遇到了一些奇怪的权限被拒绝错误,但我不知道这些错误是从哪里引起的。
$ go run .
Hello from go
$ make run
go run .
make: go: Permission denied
make: *** [Makefile:2: run] Error 127
$ make run2
echo "Make says hello" ; go run .
Make says hello
Hello from go
$ cat Makefile
run:
go run .
run2:
echo "Make says hello" ; go run .
$ cat main.go
package main
import "fmt"
func main() {
fmt.Println("Hello from go")
}
我的终端是在Ubuntu 22.04上运行的bash。
我的run
目标和直接运行go之间有什么区别,可能会导致权限被拒绝的错误?
run
和run2
之间有什么区别,使得其中一个可以工作而另一个不能?
编辑:使用-d
/ --trace
运行make。
$ make -d run
<...snip...>
No need to remake target 'Makefile'.
Updating goal targets....
Considering target file 'run'.
File 'run' does not exist.
Finished prerequisites of target file 'run'.
Must remake target 'run'.
go run .
make: go: Permission denied
make: *** [Makefile:2: run] Error 127
$ make --trace run
Makefile:2: target 'run' does not exist
go run .
make: go: Permission denied
make: *** [Makefile:2: run] Error 127
$ make --trace run2
Makefile:5: target 'run2' does not exist
echo "Make says hello"; go run .
Make says hello
Hello from go
go run .
之前添加echo“foo”;
会怎样呢? - kostix--trace
运行,它会打印出任何“有趣”的内容吗? - kostixecho "foo";
使其工作并返回foo\nHello from go"
。我已经添加了使用-d
运行 make 的输出。我不确定如何使用--trace
运行它。 - Kasper Middelboe PetersenMakefile
和main.go
;(ii)显式运行main.go
(go run main.go
),而不是运行目录中的所有.go
文件。此外,在执行运行时,请确保不要在编辑器中打开.go
文件,至少如果你使用go run .
变体的话。 - John Bollingermake
看到可以解释为简单 shell 命令的内容时,使用了一些 —— 让我们称之为 "默认" shell,而当它看到可以被认为是脚本的内容(比如用;
分隔的两个命令),它会生成一个新的 shell,但这个 shell 的初始化方式与默认 shell 不同。可能是您在登录会话开始后调整了~/.bashrc
,并且没有重新启动您正在尝试运行make
的 shell?这可能可以解释这个问题。 - kostixgo
,而go
make
看到的内容是不同的。你可以尝试将go run .
改为which go
并查看结果。嗯,我承认这些只是瞎猜,但是… - kostix