Hi!On the following script, the local variable $name of bar() hides the global $name when entering the trap. I have observed that with several versions of Bash, including
GNU bash, version 4.0.33(1)-release (i486-pc-linux-gnu)
FWIW, Zsh and Dash behave as I expected.
% cat /tmp/foo.sh #! /bin/sh trap 'echo "trap: name=$name"' 0 name=main bar () { local name=bar exit 0 } bar % bash /tmp/foo.sh trap: name=bar
Cheers.