[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [BUG] persistently assigned variable cannot be unexported in POSIX m

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'

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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]