Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14066
| From | Martijn Dekker <martijn@inlv.org> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | Re: [BUG] persistently assigned variable cannot be unexported in POSIX mode |
| Date | 2018-04-30 21:40 +0200 |
| Message-ID | <mailman.13179.1525117224.27995.bug-bash@gnu.org> (permalink) |
| References | <a16a34cf-eea7-16b8-76d8-e05d0fe2cc32@inlv.org> <2965f169-3d43-abf9-73a9-bc3142e2ef95@case.edu> <e8726a75-2137-24c8-781c-a920f308485d@inlv.org> <1463bbf8-96dd-4910-e9bb-d8688606a3c2@case.edu> |
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=abc
Causing '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.
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
Re: [BUG] persistently assigned variable cannot be unexported in POSIX mode Martijn Dekker <martijn@inlv.org> - 2018-04-30 21:40 +0200
csiph-web