Hi everyone, I've encountered a very strange behavior regarding variable scope and traps, which looks very much like a bug.
This command: echo ' set -e; tt() { declare -r v=; }; t() { tt; }; ff() { declare -r v=; false; }; f() { ff; }; trap t EXIT; f ' | bash produces this error message: bash: line 3: declare: v: readonly variable While this: bash -c ' set -e; tt() { declare -r v=; }; t() { tt; }; ff() { declare -r v=; false; }; f() { ff; }; trap t EXIT; f ' doesn't. As don't these: echo ' set -e; tt() { declare -r v=; }; t() { tt; }; ff() { declare -r v=; false; }; trap t EXIT; ff ' | bash echo ' set -e; tt() { declare -r v=; }; ff() { declare -r v=; false; }; f() { ff; }; trap tt EXIT; f ' | bash Could this indeed be a bug? If yes, can it be fixed? Thank you. Sincerely, Nick