TRAP(1)                         User Commands                        TRAP(1)
NAME
       trap, onintr - shell built-in functions to respond to (hardware)
       signals
SYNOPSIS
   sh       trap [
argument n [
n2]...]   
csh       onintr [
-| label]   
ksh       *trap [
arg sig [
sig2...]]   
ksh93       +trap [
-p] [
action condition...]
DESCRIPTION
   sh       The 
trap command 
argument is to be read and executed when the shell
       receives numeric or symbolic signal(s) (
n). (Note: 
argument is
       scanned once when the trap is set and once when the trap is taken.)
       Trap commands are executed in order of signal number or corresponding
       symbolic names. Any attempt to set a trap on a signal that was
       ignored on entry to the current shell is ineffective. An attempt to
       trap on signal 11 (memory fault) produces an error. If 
argument is
       absent all trap(s) 
n are reset to their original values. If 
argument       is the null string this signal is ignored by the shell and by the
       commands it invokes. If 
n is 
0 the command 
argument is executed on
       exit from the shell. The 
trap command with no arguments prints a list
       of commands associated with each signal number.   
csh       onintr controls the action of the shell on interrupts. With no
       arguments, 
onintr restores the default action of the shell on
       interrupts. (The shell terminates shell scripts and returns to the
       terminal command input level). With the 
- argument, the shell ignores
       all interrupts. With a 
label argument, the shell executes a 
goto       label when an interrupt is received or a child process terminates
       because it was interrupted.   
ksh       trap uses 
arg as a command to be read and executed when the shell
       receives signal(s) 
sig. 
arg is scanned once when the trap is set and
       once when the trap is taken. Each 
sig can be specified as a number or
       as the name of the signal. 
trap commands are executed in order of
       signal number. Any attempt to set a trap on a signal that was ignored
       on entry to the current shell is ineffective. If 
arg is omitted or is       
-, then the trap(s) for each 
sig are reset to their original values.
       If 
arg is the null (the empty string, for example, 
"") string then
       this signal is ignored by the shell and by the commands it invokes.
       If 
sig is 
ERR then 
arg are executed whenever a command has a non-zero
       exit status. If 
sig is 
DEBUG then 
arg are executed after each
       command. If 
sig is 
0 or 
EXIT for a 
trap set outside any function then
       the command 
arg is executed on exit from the shell. The 
trap command
       with no arguments prints a list of commands associated with each
       signal number.
       On this manual page, 
ksh(1) commands that are preceded by one or two
       * (asterisks) are treated specially in the following ways:
           1.     Variable assignment lists preceding the command remain in
                  effect when the command completes.
           2.     I/O redirections are processed after variable assignments.
           3.     Errors cause a script that contains them to abort.
           4.     Words, following a command preceded by ** that are in the
                  format of a variable assignment, are expanded with the
                  same rules as a variable assignment.  This means that
                  tilde substitution is performed after the 
= sign and word
                  splitting and file name generation are not performed.   
ksh93       trap is a special built-in that defines actions to be taken when
       conditions such as receiving a signal occur. 
trap can also be used to
       display the current trap settings on standard output.
       If 
action is 
-, 
trap resets each condition to the default value. If       
action is an empty string, the shell ignores each of the conditions
       if they arise. Otherwise, the argument 
action is read and executed by
       the shell as if it were processed by 
eval when one of the
       corresponding conditions arise. The action of the trap overrides any
       previous action associated with each specified condition. The value
       of 
$? is not altered by the trap execution.       
condition can be the name or number of a signal, or one of the
       following:       
EXIT                Execute this trap when the shell exits. If defined within a
                function with the 
function reserved word, executes the trap
                in the caller's environment when the function returns. The
                trap action is restored to the value it had when it called
                the function.       
0                Same as 
EXIT.       
DEBUG                Execute before each simple command is executed but after the
                arguments are expanded.       
ERR                Execute whenever 
set -e would cause the shell to exit.       
KEYBD                Execute when a key is entered from a terminal device.
       Signal names are case insensitive and the 
sig prefix is optional.
       Signals that were ignored on entry to a non-interactive shell cannot
       trapped or reset although doing so does not report an error. The use
       of signal numbers other than 1, 2, 3, 6, 9, 14, and 15 are not
       portable.
       Although trap is a special built-in, specifying a condition that the
       shell does not know about causes trap to exit with a 
non-zero exit
       status, but does not terminate the invoking shell.
       If no action or conditions are specified then all the current trap
       settings are written to standard output.
       The following options are supported by the 
trap built-in command in       
ksh93:       
-p             Causes the current traps to be output in a format that can be
             processed as input to the shell to recreate the current traps.
       The trap built-in in 
ksh93 exits with one of the following values:       
0             Successful completion.       
>0             An error occurred.
       On this manual page, 
ksh93(1) commands that are preceded by one or
       two 
+ (plus signs) are treated specially in the following ways:
           1.     Variable assignment lists preceding the command remain in
                  effect when the command completes.
           2.     I/O redirections are processed after variable assignments.
           3.     Errors cause a script that contains them to abort.
           4.     They are not valid function names.
           5.     Words, following a command preceded by 
++ that are in the
                  format of a variable assignment, are expanded with the
                  same rules as a variable assignment.  This means that
                  tilde substitution is performed after the 
= sign and word
                  splitting and file name generation are not performed.
SEE ALSO
       csh(1), 
eval(1), 
exit(1), 
ksh(1), 
ksh93(1), 
sh(1), 
attributes(7)                              November 20, 2007                      TRAP(1)