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
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.