diff --git a/NOTES.md b/NOTES.md index 2c8298f..cf56809 100644 --- a/NOTES.md +++ b/NOTES.md @@ -438,7 +438,7 @@ a non-zero status. If there is a command name left after expansion, execution proceeds as described below. Otherwise, the command exits with a status of zero. -##### Command Search and Execution +#### Command Search and Execution cf. 3.7.2 Command Search and Execution After a command has been split into words, if it results in a simple command and @@ -499,6 +499,37 @@ executed command consists of the shell's initial environment, whose values may be modified in the shell, less any pairs removed by the 'unset' builtin, plus any additions via the 'export' command. +#### Exit Status +cf. 3.7.5 Exit Status + +The exit status of an executed command is the value returned by the 'waitpid' +system call or equivalent function. Exit statuses fall between 0 and 255, +though, as explained below, the shell may use values above 125 specially. Exit +statuses from shell builtins and compound commands are also limited to this +range. Under certain circumstances, the shell will use special values to +indicate specific failure modes. + +For the shell's purposes, a command which exits with a zero exit status has +succeeded. A non-zero exit status indicates failure. This seemingly +counter-intuitive scheme is used so there is one well-defined way to indicate +success and a variety of ways to indicate various failure modes. When a command +terminates on a fatal signal whose number is N, Bash uses the value 128+N as the +exit status. + +If a command is not found, the child process created to execute it returns a +status of 127. If a command is found but is not executable, the return status +is 126. + +If a command fails because of an error during expansion or redirection, the exit +status is greater than zero. + +All of the Bash builtins return an exit status of zero if they succeed and a +non-zero status on failure, so they may be used by the conditional and list +constructs. All builtins return an exit status of 2 to indicate incorrect +usage, generally invalid options or missing arguments. + +The exit status of the last command is available in the special parameter $?. + ## Definitions cf. [Bash Reference Manual](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Definitions) cf. 2 Definitions