After a command has been split into words, if it results in a simple command and an optional list of arguments, the following actions are taken.
$PATHfor a directory containing an executable file by that name. Bash uses a hash table to remember the full pathnames of executable files to avoid multiple
PATHsearches (see the description of
hashin Bourne Shell Builtins). A full search of the directories in
$PATHis performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named
command_not_found_handle. If that function exists, it is invoked in a separate execution environment with the original command and the original command’s arguments as its arguments, and the function’s exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127.
shell scriptand the shell executes it as described in Shell Scripts.