Wednesday, April 27, 2022

[SOLVED] Why running a python file doesn't require the execute permission?

Issue

Why running a python file doesn't require the x permission when running it like this:

python script.py

But it does when it's being run as:

./script.py

Solution

Because what you are running with python script.py is the python program; then, it loads and runs the script that you specified in parameters, that is script.py (basically a text file). The script file doesn't need to be an executable because what is executed here is the python interpreter (the python binary itself, that should obviously have the x permission).

With .\script.py, you try to run directly your script (still the same text file) as a program. When you do that, you want it to be parsed with the interpreter that you specified in the first line of your script code, the "shebang", e.g. #!/usr/bin/env python. If it's not set with the x permission, the OS doesn't try to "execute" your file (though it might try to open it with the default program, where applicable), so, it will not care about the shebang.



Answered By - cedbeu
Answer Checked By - Mary Flores (WPSolving Volunteer)