bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

parent trap EXIT appears to subshell but is not used


From: Valentin Lab
Subject: parent trap EXIT appears to subshell but is not used
Date: Mon, 29 Mar 2021 17:31:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1

Hi,

I have encountered an issue when running some bash code from 4.3 that behave in an unexpected way on 4.4 or 5 ... I've managed to pinpoint the exact issue on my end.

Here is the code:


## ----------------
trap -- 'echo bar' EXIT
(
  echo -n 'Subshell TRAP EXIT: '
  trap -p EXIT
  echo
)
echo main shell

##----------------


Runnning this will give the same output on bash 4.4 and 5:

## ---- BEGIN OUTPUT
Subshell TRAP EXIT: trap -- 'echo bar' EXIT

main shell
bar
## ---- END OUTPUT


But will give this output on bash 4.3:

## ---- BEGIN OUTPUT
Subshell TRAP EXIT:
main shell
bar
## ---- END OUTPUT


We notice 2 important point:
- Bash >4.3 trap's is displaying parent shell's EXIT trap, while
  4.3 is not displaying it.
- None of them will execute any trap at the end of the subshell.


In 4.3, this makes sense to me. EXIT trap is not available and not executed.

In >4.3, I don't understand: 'trap -p' is displaying a trap that is not
really enabled ?


Notice that we can set an EXIT trap in the subshell, and then all bash version will display AND execute the trap at the end of the subshell. Which seems totally okay to me.


Is this strange behavior about bash >4.3 being able to display EXIT trap, but won't use them is expected ? I'd be happy to know about the rationale behind this if this is expected.


Many thanks,

Valentin Lab


PS: note that I found some other 'report' of that behavior here: https://unix.stackexchange.com/questions/282722#answer-374269



reply via email to

[Prev in Thread] Current Thread [Next in Thread]