Command Execution
When you type a command, Bash looks in the following places until it finds a match:
Keywords such as
ifandfor.Aliases. You can’t define an alias whose name is a shell keyword, but you can define an alias that expands to a keyword, e.g.,
alias aslongas=while. When not in POSIX mode, Bash does allow you to define an alias for a shell keyword.Special built-ins like break and continue. The list of POSIX special built-ins is . (dot), :, break, continue, eval, exec, exit, export, readonly, return, set, shift, times, trap, and unset. Bash adds source.
Functions. When not in POSIX mode, Bash finds functions before all built-in commands.
Nonspecial built-ins such as cd and test.
Scripts and executable programs, for which the shell searches in the directories listed in the
PATHenvironment variable.When a command is not found, if a function named
command_not_found_handleexists, the shell will call it, passing the command words as the function arguments.
The distinction between “special” built-in commands and nonspecial ones comes from POSIX. This distinction, combined with the command command, makes it possible to write functions that override shell built-ins, such as cd. For example:
cd () { Shell function; found before built-in cd
command cd "$@" Use real cd to change directory
echo now in $PWD Other stuff we want to do
}If Bash exits due to receiving SIGHUP, or if the
huponexit shell option is set, Bash will send a
SIGHUP to all running child jobs. Use disown
-h to prevent ...