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(5)


November 20, 2007 TRAP(1)