Bash Command Line Expansion

From NovaOrdis Knowledge Base
Revision as of 00:12, 9 September 2017 by Ovidiu (talk | contribs)
Jump to navigation Jump to search

Internal

Overview

Each line read by bash from command line is interpreted as a pipeline: a sequence of commands separated by the pipe character (|).

Command processing starts by checking the first word of the command against an alias list, and if a match is found, the alias is replaced.

Then the result is parsed into tokens by using metacharacters as separators.

The token are scanned to perform command line expansion, which are the following operations, performed in order:

1. Brace expansion.

2. Tilde expansion.

3. Parameter and variable expansion.

4. Arithmetic expansion.

5. Command substitution.

6. Word splitting.

7. Pathname expansion.

6. Process substitution.

After all command line expansion specified above are performed, bash proceeds with quote removal: it removes from the command line single quotation marks, double quotation marks and backslashes that are not a result of an expansion.