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. https://bugs.launchpad.net/bugs/892317 Title: set -e reverses order of signal handlers Status in dash: New Status in dash package in Ubuntu: New Bug description: 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 run. :; /bin/dash < ./trap.sh ^Ctrapped: SIG_ trapped: EXIT 2 next part :; /bin/dash -e < ./trap.sh ^Ctrapped: EXIT 130 trapped: SIG_ 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: https://bugs.launchpad.net/dash/+bug/892317/+subscriptions -- 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