为什么当前目录中的 python 脚本需要 ./ 才能使用 shebang 执行?

Why does python script in current directory need ./ for execution with shebang?

在我的当前目录中有可执行文件 script.py 和 shebang #!/usr/bin/env python。要在 bash 中执行它,我需要键入 ./script.py。根据我对 shebang 的了解,我希望 script.py 也能执行脚本,就像 python script.py 一样,但事实并非如此。后两个选项有什么区别?

在类 Un*x 系统上,出于安全原因,. 不在路径中,以避免执行可能在用户目录中的 ls 之类的命令(此安全breach 最好以 root 身份利用)

ls 等经典命令相比,python 脚本的问题较少,但带有 shebang 的 python 脚本是可执行文件,因此遵守一般安全规则。

当您键入 python myscript.py 时,您 知道 该脚本在当前目录中,并且 python 从这里读取它,而不管系统路径(它被视为 data,而不是 executable,真正的可执行文件是 python