From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by melb.werple.net.au (8.7.5/8.7.3/2) with ESMTP id DAA21091 for ; Sat, 13 Jul 1996 03:28:25 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id NAA16256; Fri, 12 Jul 1996 13:18:51 -0400 (EDT) Resent-Date: Fri, 12 Jul 1996 13:18:51 -0400 (EDT) From: "Bart Schaefer" Message-Id: <960712101804.ZM15374@candle.brasslantern.com> Date: Fri, 12 Jul 1996 10:18:00 -0700 In-Reply-To: Zoltan Hidvegi "Re: Bug Report: Env Vars and shell functions" (Jul 12, 5:27pm) References: <199607121527.RAA09051@bolyai.cs.elte.hu> Reply-To: schaefer@nbn.com X-Mailer: Z-Mail (4.0b.702 02jul96) To: Zoltan Hidvegi , zsh-workers@math.gatech.edu Subject: Re: Bug Report: Env Vars and shell functions Cc: pws@ifh.de MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"y_ub12.0.tz3.wZevn"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1634 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu On Jul 12, 5:27pm, Zoltan Hidvegi wrote: } Subject: Re: Bug Report: Env Vars and shell functions } } > On a related note, should the following not restore IFS? } > } > sun4% IFS=@ set a@b@c@d; echo $IFS } > @ } } Here is what POSIX says: } } (2) Variable assignments specified with special built-in utilities } shall remain in effect after the built-in completes; this shall } not be the case with a regular built-in or other utility. } } And it also says that shell functions should be handled similarily to } special builtins (which means that recent patches from Peter and me make } zsh less conformant). But more intuitive. I suspect POSIX was merely codifying existing sh/ksh behavior there. } Zsh currently treats a builtin this way Clarity: Zsh treats a builtin the way it treats a shell function ... } only if the BINF_MAGICEQUALS flag } is set for the builtin. These builtins are: alias, declare, hash, integer, } local, readonly and typeset. [...] } Of course zsh does not conforms to the POSIX rule and handling of special } parameters in undoubtadly not the best but it also means that applications } should not expect local variable assignments before special builtins since } it may change in the future. Hopefully it would merely become dependent on a POSIX-compliance option; the whole reason for introducing the BINF_MAGICEQUALS behavior was so that applications could expect these local variable assignments. } Also note that command arguments are evaluated before variable assignments } so the above example will never work. Has this always been the case? (Peter?) Is this correct according to POSIX? Of what use is the BINF_MAGICEQUALS behavior if the args are evaluated before the variable gets assigned? } In a POSIX shell the command builtin can be used to execute special } builtins (in zsh it executes external command only). Note that command in } not listed among the special builtins above which means that the special } assignment behaviour can be prevented by prefixing a special builtin with } the command builtin (I'm talking about POSIX and not about zsh). Hmm. So `command typeset foo=bar ; echo $foo' has what effect in POSIX? } I'm writing these because these differences between zsh and POSIX are } probably the most important ones. Perhaps that means they should be recorded somewhere, maybe Etc/BUGS or a new file? (Where's the wish-list/ToDo-list nowadays?) -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern New male in /home/schaefer: >N 2 Justin William Schaefer Sat May 11 03:43 53/4040 "Happy Birthday"