On Jun 3, 2014 1:27 PM, "Peter Stephenson"
wrote:
>
> On Tue, 03 Jun 2014 16:15:25 -0400
> Richard Hansen wrote:
> > Although it would be a behavior change, I think it would be best if both
> > 'emulate sh' and 'emulate sh -c' set POSIX_ARGZERO by default
>
> Yes, that's the policy --- backward compatibility is for native mode, sh
> compatibility can be improved without worrying about that.
The complexity here is that we're not just dealing with a particular
emulation, we're dealing with switching from one emulation to another (and
possibly back again) in the middle of a running shell session, and the
effect that has on a dynamically scoped variable that crosses the emulation
boundaries.
If I start in zsh mode and change $0, or $PATH, or any other parameter, and
then enter a different emulation, the values of those parameters don't
normally change.
> I'm not sure why we missed this one. Most of the POSIX options are on
> in sh emulations.
We didn't really miss it -- FUNCTION_ARGZERO is correctly turned off when
in sh emulation. The complication is that it affects $0 only upon entry to
the scope, so although $0 doesn't change *again*, it also doesn't revert if
it was changed previously.