et to its original
    value.  If ACTION is the null string each SIGNAL_SPEC is ignored by the
    shell and by the commands it invokes.
    
    If a SIGNAL_SPEC is EXIT (0) ACTION is executed on exit from the shell.
    If a SIGNAL_SPEC is DEBUG, ACTION is executed before every simple command
    and selected other commands. If a SIGNAL_SPEC is RETURN, ACTION is
    executed each time a shell function or a script run by the . or source
    builtins finishes executing.  A SIGNAL_SPEC of ERR means to execute ACTION
    each time a command's failure would cause the shell to exit when the -e
    option is enabled.
    
    If no arguments are supplied, trap prints the list of commands associated
    with each trapped signal in a form that may be reused as shell input to
    restore the same signal dispositions.
    
    Options:
      -l	print a list of signal names and their corresponding numbers
      -p	display the trap commands associated with each SIGNAL_SPEC in a
    		form that may be reused as shell input; or for all trapped
    		signals if no arguments are supplied
      -P	display the trap commands associated with each SIGNAL_SPEC. At least
    		one SIGNAL_SPEC must be supplied. -P and -p cannot be used
    		together.
    
    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.
    Signal names are case insensitive and the SIG prefix is optional.  A
    signal may be sent to the shell with "kill -signal $$".
    
    Exit Status:
    Returns success unless a SIGSPEC is invalid or an invalid option is given.