|
From: | Martijn Dekker |
Subject: | Re: [BUG] persistently assigned variable cannot be unexported in POSIX mode |
Date: | Mon, 30 Apr 2018 21:40:06 +0200 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
Op 30-04-18 om 21:12 schreef Chet Ramey:
2. The bug is: 'declare +x' a.k.a. 'typeset +x' then fails to unexport the variable in the second version above. The variable remains exported past 'typeset +x foo', as proven by grepping the output of 'env'.Now you've just created a local variable (typeset in a function creates local variables, even in Posix mode) and made sure it doesn't have the export attribute. You haven't given it a value, so it remains unset and doesn't shadow the exported global you created in step 1.
Of course, that makes complete sense.However, when adding the -g option, on bash 4.3.30, 4.4.19 and dev snapshot 2018-04-20:
$ bash -o posix -c 'fn() { foo=abc : ; typeset -g +x foo; env|grep ^foo=; }; fn'
foo=abcCausing 'typeset' to operate on the global scope had no effect. I had noticed that it made no difference, so I incorrectly figured the -g flag wasn't relevant and left it out of my bug report.
In any case, that still looks like a bug to me... particularly as bash 4.2.45 works as expected, so it seems to break as of 4.3.
- M.
[Prev in Thread] | Current Thread | [Next in Thread] |