为什么当前目录中的python脚本需要./来与shebang一起执行?

时间:2018-11-18 09:20:15

标签: python shebang

在我当前的目录中有带有shebang #!/usr/bin/env python的可执行script.py。要在bash中执行它,我需要输入./script.py。从我对shebang的了解中,我期望script.py也会执行脚本,与python script.py一样,但是不会。后两个选项有什么区别?

1 个答案:

答案 0 :(得分:4)

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

这对于python脚本的关注要比ls之类的经典命令少,但是带有shebang的python脚本是可执行文件,因此请遵循一般的安全规则。

当您键入python myscript.py时,您知道该脚本位于当前目录中,并且python从此处读取该脚本,而不管系统路径是什么(被视为< em> data ,而不是 executable ,真正的可执行文件是python