为什么运行python文件不需要执行权限?

时间:2016-03-08 11:09:32

标签: python executable chmod

为什么运行python文件在运行时不需要x权限:

python script.py

但是当它以:

运行时它会发生
./script.py

3 个答案:

答案 0 :(得分:8)

因为你使用python script.py运行的是python程序;然后,它加载并运行您在参数中指定的脚本,即script.py(基本上是文本文件)。脚本文件不需要是可执行文件,因为这里执行的是python解释器(python二进制文件本身,显然应该具有x权限)。

使用.\script.py,您尝试直接运行您的脚本(仍然是相同的文本文件)作为程序。当你这样做时,你希望用你在脚本代码第一行中指定的解释器解析它,例如“shebang”,例如#!/usr/bin/env python。如果没有使用x权限设置,操作系统不会尝试“执行”您的文件(尽管可能会尝试使用默认程序打开它,如果适用),因此,它不会关心家当。

答案 1 :(得分:4)

文件本身解释(读取)而不是在第一个示例中实际执行。 python应用程序是需要执行权限的。

在第二个示例中,文件本身正在执行,因此需要这些权限才能继续。

答案 2 :(得分:2)

当我们以python script.py运行脚本时,我们实际上调用了python解释器,它通常位于/usr/bin/pythonwhich python的输出将告诉您确切的位置)。

解释器依次读取脚本并执行其代码。 具有执行权限的解释器

当脚本以./script.py执行时,脚本将直接执行,因此脚本需要执行权限。使用的翻译是由shebang line指定的。

当内核发现前两个字节是#!时,它会使用该行的其余部分作为解释器并将该文件作为参数传递。请注意,要执行此操作,文件需要具有执行权限。在前一种情况下,如果我们将脚本执行为./script.py

,我们间接执行内核会执行的操作

简而言之,通过method1执行,解释器只需要读取权限,但以后需要直接执行它