为什么运行一个python文件不需要执行权限?
Why running a python file doesn't require the execute permission?
为什么 运行 宁一个 python
文件不需要 x
权限当 运行 宁它是这样的:
python script.py
但是当 运行 为:
./script.py
它解释(读取)文件本身而不是在您的第一个示例中实际执行。 python 应用程序需要执行权限。
在第二个示例中,文件本身正在执行,因此需要这些权限才能继续。
因为你运行python script.py
是python程序;然后,它加载并 运行s 您在参数中指定的脚本,即 script.py
(基本上是一个文本文件)。脚本文件不需要是可执行文件,因为这里执行的是 python 解释器(python 二进制文件本身,显然应该具有 x
权限)。
使用 .\script.py
,您尝试 运行 直接将您的脚本(仍然是相同的文本文件)作为程序。当你这样做时,你希望它用你在脚本代码的第一行中指定的解释器来解析,"shebang",例如#!/usr/bin/env python
。如果未设置 x
权限,OS 不会尝试 "execute" 您的文件(尽管它可能会尝试使用默认程序打开它,如果适用),因此,它不会关心shebang。
当我们运行一个脚本作为python script.py
时,我们实际上调用了通常位于/usr/bin/python
的python解释器(which python
的输出将告诉你具体位置)。
解释器依次读取脚本并执行其代码。
有执行权限的是解释器
当脚本作为 ./script.py
执行时,脚本将直接执行,因此 脚本 需要执行权限。使用的解释器由 shebang 行指定。
当内核发现前两个字节是 #!
时,它使用该行的其余部分作为解释器并将文件作为参数传递。请注意,要执行此操作,文件需要具有执行权限。在前一种情况下,如果我们将脚本执行为 ./script.py
,我们将间接执行内核会执行的操作
简而言之,通过method1执行,解释器只需要读权限,后面需要直接执行
为什么 运行 宁一个 python
文件不需要 x
权限当 运行 宁它是这样的:
python script.py
但是当 运行 为:
./script.py
它解释(读取)文件本身而不是在您的第一个示例中实际执行。 python 应用程序需要执行权限。
在第二个示例中,文件本身正在执行,因此需要这些权限才能继续。
因为你运行python script.py
是python程序;然后,它加载并 运行s 您在参数中指定的脚本,即 script.py
(基本上是一个文本文件)。脚本文件不需要是可执行文件,因为这里执行的是 python 解释器(python 二进制文件本身,显然应该具有 x
权限)。
使用 .\script.py
,您尝试 运行 直接将您的脚本(仍然是相同的文本文件)作为程序。当你这样做时,你希望它用你在脚本代码的第一行中指定的解释器来解析,"shebang",例如#!/usr/bin/env python
。如果未设置 x
权限,OS 不会尝试 "execute" 您的文件(尽管它可能会尝试使用默认程序打开它,如果适用),因此,它不会关心shebang。
当我们运行一个脚本作为python script.py
时,我们实际上调用了通常位于/usr/bin/python
的python解释器(which python
的输出将告诉你具体位置)。
解释器依次读取脚本并执行其代码。 有执行权限的是解释器
当脚本作为 ./script.py
执行时,脚本将直接执行,因此 脚本 需要执行权限。使用的解释器由 shebang 行指定。
当内核发现前两个字节是 #!
时,它使用该行的其余部分作为解释器并将文件作为参数传递。请注意,要执行此操作,文件需要具有执行权限。在前一种情况下,如果我们将脚本执行为 ./script.py
简而言之,通过method1执行,解释器只需要读权限,后面需要直接执行