bash resets BASH_SUBSHELL to 0 when executing an EXIT trap, even if the EXIT trap is executed in a subshell.
echo $(trap 'echo $BASH_SUBSHELL' EXIT; echo $BASH_SUBSHELL) Actual output: 1 0 Expected output: 1 1 The same does not happen for a signal trap. echo $(trap 'echo $BASH_SUBSHELL; exit' INT; echo $BASH_SUBSHELL; kill -s INT $BASHPID) Actual output: 1 1 Expected output: 1 1 Thanks, - Martijn