I have noticed this in a couple of scripting languages, but in this example, I am using python. In many tutorials, they would start with #!/usr/bin/python3
on the first line. I don't understand why we have this.
If anything, I could see this breaking the python script because of the listed reasons above.
#!/usr/bin/python3
is a shebang line.
A shebang line defines where the interpreter is located. In this case, the python3
interpreter is located in /usr/bin/python3
. A shebang line could also be a bash
, ruby
, perl
or any other scripting languages' interpreter, for example: #!/bin/bash
.
Without the shebang line, the operating system does not know it's a python script, even if you set the execution flag on the script and run it like ./script.py
. To make the script run by default in python3, either invoke it as python3 script.py
or set the shebang line.
You can use #!/usr/bin/env python3
for portability across different systems in case they have the language interpreter installed in different locations.