Name
trap, onintr - shell built-in functions to respond to
(hardware) signals
Synopsis
sh
trap [argument n [n2]...]
csh
onintr [-| label]
ksh88
*trap [arg sig [sig2...]]
ksh
+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 argu-
ment is the null string this signal is ignored by the shell
and by the commands it invokes. If n is 0 the command argu-
ment 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.
ksh88
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, ksh88(1) commands that are preceded by
one or two * (asterisks) are treated specially in the fol-
lowing 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 assign-
ment. This means that tilde substitution is per-
formed after the = sign and word splitting and file
name generation are not performed.
ksh
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 stan-
dard 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 pro-
cessed 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 dev-
ice.
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 ksh:
-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 ksh exits with one of the following
values:
0
Successful completion.
>0
An error occurred.
On this manual page, ksh(1) commands that are preceded by
one or two + (plus signs) are treated specially in the fol-
lowing 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 assign-
ment. This means that tilde substitution is per-
formed after the = sign and word splitting and file
name generation are not performed.
Attributes
See attributes(5) for descriptions of the following attri-
butes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRI-
BUTE TYPEATTRIBUTE VALUE _ Availabilitysystem/core-os
See Also
csh(1), eval(1), exit(1), ksh(1), ksh88(1), sh(1), attributes(5)