zsh-workers
 help / color / mirror / code / Atom feed
From: Zoltan Hidvegi <hzoli@cs.elte.hu>
To: schaefer@brasslantern.com (Bart Schaefer)
Cc: zsh-workers@math.gatech.edu
Subject: Re: PWD parameter
Date: Sun, 24 May 1998 12:38:58 -0500 (CDT)	[thread overview]
Message-ID: <199805241738.MAA25692@hzoli.home> (raw)
In-Reply-To: <980524094224.ZM7888@candle.brasslantern.com> from Bart Schaefer at "May 24, 98 09:42:24 am"

Bart Schaefer wrote:
> } Why do you think that PWD is better be a special parameter?
> 
> Because I like that it can't be *un*set.  That means I can always rely
> on using it in zsh scripts, rather than having to do the silly tests for
> it being set and having to assign it from `pwd` to make sure it's there.

In scripts you can rely on it even if it is non-special since zsh does
set it.  It is more difficult in shell functions.  Even if we do not
allow unsetting PWD it can be changed, unless made read-only.  I'd still
use it.  If the user wants to burn himself, let him do it.  In most cases
you can use ~+ instead of $PWD, ~+ always uses the internal pwd variable.

Note that PWD can be unset even without my patch after typeset +r PWD.
After that, PWD can be unset and assigned, although assignments have no
effect.  And right now you can unset any writable special parameters.

> } Scripts do set PWD and if we want to allow people to
> } use zsh as /bin/sh then we have to allow them to write PWD.
> } If PWD is special, assignments will write directly to the internal pwd
> 
> Why is that necessary?  PWD could be a special parameter without tying it
> to any C variable that zsh uses internally.  That just happened to be the
> way it was done (prior to your patch).

It is always good to reduce the number of special parameters, since they
are more complicated to handle in various places, and sometimes special
parameters behave differently from non-special parameters.

> I don't so much care that it's read-only as I do that it's never unset.
> (Thinking about it, I might throw in "and always contains an absolute
> path to a directory that existed at the time the variable was assiged.")

Looks like you'd like to ignore any changes to PWD, or at least when you
assign it you'd like to check that the assigned value is correct.  This
is exacly how zsh behaves after typeset +r PWD.  Do you prefer that
solution (when assignment is allowd but has no effect)?

Zoltan


  reply	other threads:[~1998-05-24 17:42 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-05-24  4:44 Zoltan Hidvegi
1998-05-24  5:57 ` Bart Schaefer
1998-05-24  7:51   ` Zoltan Hidvegi
1998-05-24 16:42     ` Bart Schaefer
1998-05-24 17:38       ` Zoltan Hidvegi [this message]
1998-05-25  2:16         ` Bart Schaefer
1998-05-25  3:02           ` Zoltan Hidvegi
1998-05-25  4:02             ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=199805241738.MAA25692@hzoli.home \
    --to=hzoli@cs.elte.hu \
    --cc=schaefer@brasslantern.com \
    --cc=zsh-workers@math.gatech.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).