为什么我们在使用 shebang 时需要使文件可执行?

Why do we need to make file executable when using shebang?

我是一个 unix 新手,正在探索 shebang line 的功能。

例如,假设我有一个要执行的程序 program.py。

一种执行方式是直接调用解释器命令:

python program.py

如果使用 shebang 行,我将包括:

#!/usr/bin/env python 

在文件开头告诉系统使用什么解释器。

那么为什么我们在这种情况下需要通过调用来制作文件'executable':

chmod +x program.py

然后调用:

./program.py

执行它,

而不是直接调用:

program.py

要执行吗?

你在问两个不相关的问题。

我们使其可执行,以便 OS 读取 shebang 行。

我们在它前面加上“./”,这样 shell 可以找到它并告诉 OS 执行它,因为脚本不太可能位于 [=] 中列出的目录中10=].