The behavior seems to have changed in later version. I tested dash 0.5.10.2-6.
There EXIT trap is not run at all, if -e is used, and you use Ctrl-C. But if
you remove the 'exit 2' from the signal trap, EXIT trap will be run regardless
of -e setting, when you press Ctrl-C. That is not intuitive. So I think EXIT
trap should be run even in case of -e. However, if you do not need custom exit
status for the signal trap, you could just remove the exit builtin.
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dash in Ubuntu.
set -e reverses order of signal handlers
Status in dash:
Status in dash package in Ubuntu:
When `-e` is not specified, an INT signal handler runs before an EXIT
signal handler; when -e is specified, the EXIT signal handler is run
(but only one of its statements) and then the INT signal handler is
:; /bin/dash < ./trap.sh
trapped: EXIT 2
:; /bin/dash -e < ./trap.sh
^Ctrapped: EXIT 130
With `bash --posix` or `busybox sh`, the order of signal handlers is
the same no matter whether `-e` is specified or no. Please see the
attached script, `trap.sh`.
To manage notifications about this bug go to:
Mailing list: https://launchpad.net/~touch-packages
Post to : firstname.lastname@example.org
Unsubscribe : https://launchpad.net/~touch-packages
More help : https://help.launchpad.net/ListHelp