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: 2018-06-19 17:40 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... related to 0001065 Clarification request on invocations ======================================================================
---------------------------------------------------------------------- (0004046) kre (reporter) - 2018-06-19 17:40 http://austingroupbugs.net/view.php?id=767#c4046 ---------------------------------------------------------------------- Also, the idea that "unset" should (ever) mean "unlocal" is just mind boggling to me - an option to unset perhaps, but if an unlocal, or upvar, or similar command is needed - just add it, don't pervert something that already has meaning. That is, I would summit, that anywhere, that is in any context whatever, the sequence unset VAR && printf '%s\n' "${VAR:-OK}" must *always* say "OK", or generate an error (if VAR is readonly) with no exceptions permitted. And incidentally, wrt readonly vars, what should happen when one is made readonly is an interesting question (I mean here, what should happen, not what we should write in a standard if it were to be written today). I used to be of the opinion that once a var is readonly, it must stay that way, and making it local in a function should be essentially a no-op (or perhaps an error - especially in shells where unset is the default for new local vars). More recently I am shifting to the view that the readonly attribute on the previous instance of the var should be irrelevant. While the local version is in scope, it should make no difference at all what the attributes of the hidden one was. Similarly if an exported var is made local, but not then exported, the export attribute should be lost while the local var remains in scope. Of course, once the local var vanishes, the previous one is restored, along with all attributes, unchanged. I'd also dispute the "break tons of existing scripts" assertion (for making the default for local either -I or -N to use the NetBSD sh options). There are certainly scripts that would be affected, but the vast majority that I have seen simply don't care - they assign a value to local vars before any attempt is made to use them (partly I expect, because many sh programmers believe they are writing C ...(or similar)) 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 2017-05-24 20:10 chet_ramey Note Added: 0003748 2017-12-14 16:44 eblake Relationship added related to 0001065 2018-06-19 15:45 mirabilos Note Added: 0004043 2018-06-19 16:32 stephane Note Added: 0004044 2018-06-19 16:33 stephane Note Edited: 0004044 2018-06-19 17:25 kre Note Added: 0004045 2018-06-19 17:40 kre Note Added: 0004046 ======================================================================
