zsh-workers
 help / color / mirror / code / Atom feed
* 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).