Op 26-04-18 om 04:51 schreef Martijn Dekker:
I've also succeeded in making 'unset -v' fail silently for a variable
that is so exported, but I've so far been unable to track down a
specific reproducer that is simple enough to post here.
Here is that reproducer. The following appears to be the minimum
necessary to consistently make 'unset' silently fail on bash 4.2.45,
4.3.30, 4.4.19 and current git. (I confirmed the bug is *not* present on
bash 4.0.38, 3.2.48, 3.1.0, 3.0.16 and 2.05b.)
POSIXLY_CORRECT=y
func1() {
var=1
var=2 : # or 'var=2 return', or another special builtin
}
func2() {
func1
unset -v var # bug: fails silently
}
func2
echo ${var+"BUG: still set"}
Output: 'BUG: still set'
Expected output: none
It appears that it must have one function calling another, and that
other function having an assignment preceding a special builtin, for
'unset' to fail silently for the variable so assigned.
Thanks,
- M.