* Can't overwrite $0 in functions anymore
@ 2015-06-13 23:05 Mikael Magnusson
2015-06-13 23:58 ` Bart Schaefer
0 siblings, 1 reply; 3+ messages in thread
From: Mikael Magnusson @ 2015-06-13 23:05 UTC (permalink / raw)
To: zsh workers
Is this an intended change?
% zsh-5.0.2-dev-0
% () { 0=hello; echo $0 }
hello
% zsh-5.0.5-dev-0
% () { 0=hello; echo $0 }
(anon)
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Can't overwrite $0 in functions anymore
2015-06-13 23:05 Can't overwrite $0 in functions anymore Mikael Magnusson
@ 2015-06-13 23:58 ` Bart Schaefer
2015-06-14 6:00 ` Mikael Magnusson
0 siblings, 1 reply; 3+ messages in thread
From: Bart Schaefer @ 2015-06-13 23:58 UTC (permalink / raw)
To: zsh workers, zsh workers
On Jun 14, 1:05am, Mikael Magnusson wrote:
}
} Is this an intended change?
Hm. Sort of. It's a side-effect of implementing POSIX_ARGZERO.
With POSIX_ARGZERO set, $0 must always contain the name used to invoke
the shell. If POSIX_ARGZERO changes from set to not set, $0 has to be
restored as specified by the (on or off) setting of FUNCTION_ARGZERO.
Consequently the value of $0 became fixed for both cases; assignments
to it are no-ops.
However, you can still change the value of $0 by hiding the special:
torch% () { local -h 0=hello; echo $0 }
hello
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Can't overwrite $0 in functions anymore
2015-06-13 23:58 ` Bart Schaefer
@ 2015-06-14 6:00 ` Mikael Magnusson
0 siblings, 0 replies; 3+ messages in thread
From: Mikael Magnusson @ 2015-06-14 6:00 UTC (permalink / raw)
To: Bart Schaefer; +Cc: zsh workers
On Sun, Jun 14, 2015 at 1:58 AM, Bart Schaefer
<schaefer@brasslantern.com> wrote:
> On Jun 14, 1:05am, Mikael Magnusson wrote:
> }
> } Is this an intended change?
>
> Hm. Sort of. It's a side-effect of implementing POSIX_ARGZERO.
>
> With POSIX_ARGZERO set, $0 must always contain the name used to invoke
> the shell. If POSIX_ARGZERO changes from set to not set, $0 has to be
> restored as specified by the (on or off) setting of FUNCTION_ARGZERO.
>
> Consequently the value of $0 became fixed for both cases; assignments
> to it are no-ops.
>
> However, you can still change the value of $0 by hiding the special:
>
> torch% () { local -h 0=hello; echo $0 }
> hello
Ah, I see. I was only using it in a single helper function out of
laziness, precisely because it let me leave out a local statement. :)
--
Mikael Magnusson
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-06-14 6:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-13 23:05 Can't overwrite $0 in functions anymore Mikael Magnusson
2015-06-13 23:58 ` Bart Schaefer
2015-06-14 6:00 ` Mikael Magnusson
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).