Shebang

From NovaOrdis Knowledge Base
Revision as of 00:35, 2 May 2023 by Ovidiu (talk | contribs) (→‎The Path Must be Absolute)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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('.')