# Non-empty traps should be reset in subshell # HUP is special in interactive shells trap '' HUP # QUIT is always special trap '' QUIT # SYS is not special trap '' SYS # WINCH is harmless trap 'bad: caught WINCH' WINCH # With TERM we'll check whether it is reset trap 'bad: caught TERM' TERM (trap; "$THIS_SH" -c 'kill -HUP $PPID'; echo Ok) (trap; "$THIS_SH" -c 'kill -QUIT $PPID'; echo Ok) (trap; "$THIS_SH" -c 'kill -SYS $PPID'; echo Ok) (trap; "$THIS_SH" -c 'kill -WINCH $PPID'; echo Ok) (trap; "$THIS_SH" -c 'kill -TERM $PPID'; echo Bad: TERM is not reset) echo Done