When Bash is interactive, in the absence of any traps, it ignores
SIGTERM (so that 'kill 0' does not kill an interactive shell),
is caught and handled (so that the
wait builtin is interruptible).
When Bash receives a
SIGINT, it breaks out of any executing loops.
In all cases, Bash ignores
If job control is in effect (see section 7 Job Control), Bash
Commands started by Bash have signal handlers set to the
values inherited by the shell from its parent.
When job control is not in effect, asynchronous commands
SIGQUIT as well.
Commands run as a result of
command substitution ignore the keyboard-generated job control signals
The shell exits by default upon receipt of a
Before exiting, an interactive shell resends the
all jobs, running or stopped.
Stopped jobs are sent
SIGCONT to ensure that they receive
To prevent the shell from sending the
SIGHUP signal to a
particular job, it should be removed
from the jobs table with the
builtin (see section 7.2 Job Control Builtins) or marked
to not receive
huponexit shell option has been set with
(see section 4.2 Bash Builtin Commands), Bash sends a
SIGHUP to all jobs when
an interactive login shell exits.
When Bash receives a signal for which a trap has been set while waiting
for a command to complete, the trap will not be executed until the
When Bash is waiting for an asynchronous
command via the
wait builtin, the reception of a signal for
which a trap has been set will cause the
wait builtin to return
immediately with an exit status greater than 128, immediately after
which the trap is executed.