Shebang

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

External

Internal

Overview

The #! sequence of characters at the beginning of a file indicates that the file is a script: a set of commands to be fed into an interpreter. The #! is actually a two-byte magic number, a special marker that designates a file type, or in this case an executable script. The path that follows #! is the path to the program that interprets the commands in the script, whether it be a shell, a programming language, or a utility. The interpreter executes the commands in the script, starting with the line following the #! line:

#! <interpreter> [optional-args]

The Path Must be Absolute

The interpreter should always be specified by absolute path to ensure that the script can be executed from any directory. In case of relative path, it's generally a typo and shell static checkers usually warn against this syntax. Alternatively use /usr/bin/env.

Bash

#!/usr/bin/env bash
echo "."

Python

#!/usr/bin/env python
print('.')