A NOTE has been added to this issue. 
====================================================================== 
http://austingroupbugs.net/view.php?id=767 
====================================================================== 
Reported By:                dwheeler
Assigned To:                ajosey
====================================================================== 
Project:                    1003.1(2008)/Issue 7
Issue ID:                   767
Category:                   Shell and Utilities
Type:                       Enhancement Request
Severity:                   Objection
Priority:                   normal
Status:                     Under Review
Name:                       David A. Wheeler 
Organization:                
User Reference:              
Section:                    XCU 2.14 (local) 
Page Number:                2374 
Line Number:                75650 
Interp Status:              --- 
Final Accepted Text:         
====================================================================== 
Date Submitted:             2013-10-11 02:02 UTC
Last Modified:              2017-05-24 16:20 UTC
====================================================================== 
Summary:                    Add built-in "local"
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0000771 Expose alternate shell function usage t...
related to          0000465 is the list of special built-ins exhaus...
related to          0001025 set description contains counterproduct...
====================================================================== 

---------------------------------------------------------------------- 
 (0003747) kre (reporter) - 2017-05-24 16:20
 http://austingroupbugs.net/view.php?id=767#c3747 
---------------------------------------------------------------------- 
Re: Note: 0003746

    > Not really, those are separate issues,
    Not given what Joerg wrote.

OK, if you were commenting on just that point.   But that is a
little strange, as that issue in his example was (I believe)
largely irrelevant, the point he was making, as I saw it (and Joerg
can correct me if I am mistaken) was that he doubts that users
will want to see a new value just "magically" appear (regardless
of from where it comes.)

That is, I would expect, and I think most average users would
expect, that in any situation, with this code ...

        unset X && test -n "${X+set}" && abort
    
if abort is ever executed - if there is any way to make abort ever
be executed, then the shell is broken - badly broken.   Note that if
X is readonly, the "unset" fails, so the test never gets executed.
That's the only way that X should be able to appear as set after
unset X, and before it is assigned a new value.

When a variable is unset, the one thing everyone should be able to
count on, is that it is unset (whatever happens to other attributes,
etc.)\

If you need an "unlocal" command, add one.   It could even be unset with
some strange option given.   Just not plain unset.

    And whether or not "destroying all knowledge of the variables" removes
    the "shadowing" that a scope stack provides.

That was what I meant by that phrase, yes.   And that's what I don't
think unset should do (or not in any standard usage.)

    That's why I support the view that `local x'
    by itself does not set a variable x: 
    
Of course not, is there anyone claimimg differently?

    because it hasn't been assigned a value.

but here you are venturing into the unknown.   How do you know that?

In the sequence 

        X=foo
        local X 
    
X has clearly been assigned a value, you can see it right there.

Of course if your "because it hasn't been assigned" was reworded
as "because it is not being assigned" then I'd agree.
    
You only get a different opinion if you believe that "local" is creating
something new, rather than arrannging to save, and later restore, the
value of X.   I prefer local to be just like the existing export, and
readonly, they set attributes on a variable, they do not create them.
    
This model also does away with scoping questions completely.  There
only is one scope (just as now in POSIX) - "local" is just doing the
equivalent of
        save_X="${X}"           # possibly followed by: unset X

and arranging for "return" (including the implicit one at func end,
and any exit of the func caused by an abort that does not cause the
shell to exit) to do

        X="${save_X}"

but also including attributes, and using anonymous save variables.

I think you'd agree that if in

        X=foo
        export X

X was now unset, no-one would be happy.   Why should there be a difference
for local? 

The question of whether after "local X" there should be an implicit "unset
X"
is not material here (and it seems like we have a reasonable solution to
avoid that issue.) 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2013-10-11 02:02 dwheeler       New Issue                                    
2013-10-11 02:02 dwheeler       Status                   New => Under Review 
2013-10-11 02:02 dwheeler       Assigned To               => ajosey          
2013-10-11 02:02 dwheeler       Name                      => David A. Wheeler
2013-10-11 02:02 dwheeler       Section                   => XCU 2.14 (local)
2013-10-11 02:02 dwheeler       Page Number               => 2374            
2013-10-11 02:02 dwheeler       Line Number               => 75650           
2013-10-11 08:31 geoffclare     Relationship added       related to 0000465  
2013-10-15 22:47 dwheeler       Note Added: 0001912                          
2013-10-17 05:52 ranjit         Note Added: 0001924                          
2013-10-20 05:00 shware_systems Note Added: 0001937                          
2013-11-14 16:08 geoffclare     Relationship added       related to 0000771  
2015-04-23 23:12 emaste         Issue Monitored: emaste                      
2016-07-05 09:35 joerg          Note Added: 0003285                          
2016-12-01 16:51 eblake         Relationship added       related to 0001025  
2017-05-19 21:39 mirabilos      Note Added: 0003699                          
2017-05-19 22:12 stephane       Note Added: 0003701                          
2017-05-22 11:19 joerg          Note Added: 0003702                          
2017-05-22 11:20 joerg          Note Edited: 0003702                         
2017-05-22 11:20 joerg          Note Edited: 0003702                         
2017-05-22 11:21 joerg          Note Edited: 0003702                         
2017-05-22 19:38 stephane       Note Added: 0003703                          
2017-05-22 23:06 shware_systems Note Added: 0003704                          
2017-05-23 03:41 kre            Note Added: 0003705                          
2017-05-23 10:47 shware_systems Note Added: 0003706                          
2017-05-23 11:07 shware_systems Note Edited: 0003706                         
2017-05-23 12:06 stephane       Note Added: 0003707                          
2017-05-23 13:08 joerg          Note Added: 0003708                          
2017-05-23 13:18 joerg          Note Added: 0003709                          
2017-05-23 13:19 joerg          Note Edited: 0003709                         
2017-05-23 13:41 chet_ramey     Note Added: 0003710                          
2017-05-23 13:47 joerg          Note Added: 0003711                          
2017-05-23 13:47 chet_ramey     Note Added: 0003712                          
2017-05-23 13:51 joerg          Note Added: 0003713                          
2017-05-23 14:00 chet_ramey     Note Added: 0003714                          
2017-05-23 14:05 chet_ramey     Note Added: 0003715                          
2017-05-23 14:11 stephane       Note Added: 0003716                          
2017-05-23 14:14 chet_ramey     Note Added: 0003717                          
2017-05-23 14:17 joerg          Note Added: 0003718                          
2017-05-23 14:19 stephane       Note Added: 0003719                          
2017-05-23 14:26 chet_ramey     Note Added: 0003720                          
2017-05-23 14:29 chet_ramey     Note Added: 0003721                          
2017-05-23 14:32 chet_ramey     Note Added: 0003722                          
2017-05-23 14:45 joerg          Note Added: 0003723                          
2017-05-23 15:16 chet_ramey     Note Added: 0003724                          
2017-05-23 15:29 stephane       Note Added: 0003725                          
2017-05-23 16:34 shware_systems Note Added: 0003726                          
2017-05-23 17:28 shware_systems Note Added: 0003727                          
2017-05-23 17:43 chet_ramey     Note Added: 0003728                          
2017-05-23 18:49 shware_systems Note Added: 0003729                          
2017-05-23 22:54 kre            Note Added: 0003730                          
2017-05-23 23:38 kre            Note Added: 0003731                          
2017-05-23 23:48 kre            Note Edited: 0003731                         
2017-05-23 23:57 kre            Note Edited: 0003731                         
2017-05-24 00:06 kre            Note Added: 0003732                          
2017-05-24 00:18 kre            Note Edited: 0003732                         
2017-05-24 00:40 kre            Note Edited: 0003732                         
2017-05-24 07:31 shware_systems Note Added: 0003733                          
2017-05-24 09:25 stephane       Note Added: 0003735                          
2017-05-24 09:53 kre            Note Added: 0003736                          
2017-05-24 10:37 kre            Note Added: 0003737                          
2017-05-24 10:38 kre            Note Edited: 0003737                         
2017-05-24 10:56 joerg          Note Added: 0003738                          
2017-05-24 11:24 stephane       Note Added: 0003739                          
2017-05-24 11:26 stephane       Note Edited: 0003739                         
2017-05-24 11:30 stephane       Note Edited: 0003739                         
2017-05-24 12:08 kre            Note Added: 0003740                          
2017-05-24 12:23 kre            Note Added: 0003741                          
2017-05-24 12:27 kre            Note Added: 0003742                          
2017-05-24 12:42 stephane       Note Added: 0003743                          
2017-05-24 12:59 kre            Note Added: 0003744                          
2017-05-24 13:02 joerg          Note Added: 0003745                          
2017-05-24 13:09 joerg          Note Edited: 0003745                         
2017-05-24 13:20 joerg          Note Edited: 0003745                         
2017-05-24 13:26 chet_ramey     Note Added: 0003746                          
2017-05-24 13:41 joerg          Note Edited: 0003745                         
2017-05-24 16:20 kre            Note Added: 0003747                          
======================================================================


Reply via email to