trap [ arg [ sig ... ] ]
       arg is a series of commands (usually quoted to pro-
       tect  it from immediate evaluation by the shell) to
       be read and executed when the shell  receives  sig.
       Each sig can be given as a number or as the name of
       a signal.  If arg is `-', then all  traps  sig  are
       reset to their default values.  If arg is the empty
       string, then this signal is ignored  by  the  shell
       and by the commands it invokes.

       If sig is ZERR then arg will be executed after each
       command with a nonzero  exit  status.   If  sig  is
       DEBUG then arg will be executed after each command.
       If sig is 0 or EXIT and the trap statement is  exe-
       cuted  inside the body of a function, then the com-
       mand arg is executed after the function  completes.
       If  sig  is 0 or EXIT and the trap statement is not
       executed inside the body of a  function,  then  the
       command  arg is executed when the shell terminates.

       ZERR, DEBUG and EXIT traps are not executed  inside
       other traps.

       The trap command with no arguments prints a list of
       commands associated with each signal.

       Note that traps defined with the trap  builtin  are
       slightly  different  from those defined as `TRAPNAL
       () { ... }', as the latter have their own  function
       environment  (line  numbers, local variables, etc.)
       while the former use the environment of the command
       in which they were called.  For example,

              trap 'print $LINENO' DEBUG

       will  print  the  line number of a command executed
       after it has run, while

              TRAPDEBUG() { print $LINENO; }

       will always print the number zero.

       Alternative signal names are allowed  as  described
       under  kill  above.   Defining  a trap under either
       name causes any trap under an alternative  name  to
       be  removed.   However,  it is recommended that for
       consistency users stick exclusively to one name  or
       another.
