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)