bug-bash
[Top][All Lists]
Advanced

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

Re: [BUG] 'unset' fails silently under specific conditions


From: Chet Ramey
Subject: Re: [BUG] 'unset' fails silently under specific conditions
Date: Tue, 1 May 2018 14:36:29 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 5/1/18 2:29 PM, Martijn Dekker wrote:
> Op 01-05-18 om 18:45 schreef Martijn Dekker:
>> 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.
> 
> Actually it can be simplified further: the following also outputs "BUG:
> still set". I fact, with this version, the bug manifests all the way down
> to bash 2.05b!
> 
> POSIXLY_CORRECT=y
> func() {
>   var=1
>   var=2 :       # or 'var=2 set foo', or another special builtin
>   unset -v var  # bug: fails silently
> }
> func
> echo ${var+"BUG: still set"}

OK, so which is it? Does an assignment statement preceding a special
builtin in a shell function create a local variable (as we discussed
just yesterday) or does it create a global variable because `Posix'?
Because if it creates a local variable, that's the one the `unset'
builtin unsets, leaving the global variable created by the first
assignment statement untouched.

I'm not disputing that there were bugs with this construct, just trying
to figure out which behavior you think is correct.
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

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