[Bug 892317] Re: set -e reverses order of signal handlers
Jarno Suni
892317 at bugs.launchpad.net
Mon Jul 6 08:23:37 UTC 2020
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
Foundations Bugs, 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
More information about the foundations-bugs
mailing list