Errors detected by the shell, such as syntax errors, cause the shell to return a nonzero exit status. Otherwise, the shell returns the exit status of the last command carried out. The shell reports detected run-time errors by printing the command or function name and the error condition. If the number of the line on which an error occurred is greater than 1, then the line number is also printed in [ ] (brackets) after the command or function name.
For a non-interactive shell, an error encountered by a special built-in or other type of command will cause the shell to write a diagnostic message as shown in the following table:
|Error||Special Built-In||Other Utilities|
|Shell language syntax error||will exit||will exit|
|Utility syntax error (option or operand error)||will exit||will not exit|
|Redirection error||will exit||will not exit|
|Variable assignment error||will exit||will not exit|
|Expansion error||will exit||will exit|
|Command not found||not applicable||may exit|
|Dot script not found||will exit||not applicable|
If any of the errors shown as "will (may) exit" occur in a subshell, the subshell will (may) exit with a nonzero status, but the script containing the subshell will not exit because of the error.
In all cases shown in the table, an interactive shell will write a diagnostic message to standard error, without exiting.
For more information about redirection see "Input and Output Redirection in the Korn Shell or POSIX Shell."