在我当前的目录中有带有shebang #!/usr/bin/env python
的可执行script.py。要在bash中执行它,我需要输入./script.py
。从我对shebang的了解中,我期望script.py
也会执行脚本,与python script.py
一样,但是不会。后两个选项有什么区别?
答案 0 :(得分:4)
在类似Un * x的系统上,出于安全原因,.
不在路径中,以避免执行可能位于用户目录中的类似ls
的命令(此安全漏洞是最好以root身份使用)
这对于python脚本的关注要比ls
之类的经典命令少,但是带有shebang的python脚本是可执行文件,因此请遵循一般的安全规则。
当您键入python myscript.py
时,您知道该脚本位于当前目录中,并且python
从此处读取该脚本,而不管系统路径是什么(被视为< em> data ,而不是 executable ,真正的可执行文件是python
)