zsh-users
 help / color / mirror / code / Atom feed
* Unsetting a variable that was not previously set
@ 2003-04-04 15:49 Vincent Lefevre
  2003-04-04 16:09 ` Peter Stephenson
  0 siblings, 1 reply; 4+ messages in thread
From: Vincent Lefevre @ 2003-04-04 15:49 UTC (permalink / raw)
  To: zsh-users

zsh should return an exit status 0 when unsetting a variable that was
not previously set.

greux:~> zsh-beta -f
greux% echo $ZSH_VERSION
4.1.0-dev-7
greux% unset blah && echo OK
greux%

It should have printed 'OK'.

See
  http://www.opengroup.org/onlinepubs/007904975/utilities/unset.html

"Unsetting a variable or function that was not previously set shall
not be considered an error and does not cause the shell to abort."

The following shells print 'OK' as expected:
  * /bin/sh under Solaris
  * /bin/sh under OSF1
  * bash (under Linux)

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unsetting a variable that was not previously set
  2003-04-04 15:49 Unsetting a variable that was not previously set Vincent Lefevre
@ 2003-04-04 16:09 ` Peter Stephenson
  2003-04-04 16:29   ` Oliver Kiddle
  2003-04-04 20:41   ` Vincent Lefevre
  0 siblings, 2 replies; 4+ messages in thread
From: Peter Stephenson @ 2003-04-04 16:09 UTC (permalink / raw)
  To: zsh-users

Vincent Lefevre wrote:
> zsh should return an exit status 0 when unsetting a variable that was
> not previously set.
>
> See
>   http://www.opengroup.org/onlinepubs/007904975/utilities/unset.html

I think you're probably right, but it's not completely clear.  The page
you quote explicitly says:

EXIT STATUS

     0
        All name operands were successfully unset.
    >0
        At least one name could not be unset.

Now, if it doesn't exist, it can't be unset, but I think by `unset' they
mean `rendered such that it is not set whether or not it was before',
which is your interpretation.

> "Unsetting a variable or function that was not previously set shall
> not be considered an error and does not cause the shell to abort."

It doesn't cause the shell to abort currently.  The terminology in the
introduction does suggest `error' is more or less synonymous with
`non-zero return code', but I can find no normative indication of
whether this applies to the language used for the special builtins.

Probably someone should request a clarification.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unsetting a variable that was not previously set
  2003-04-04 16:09 ` Peter Stephenson
@ 2003-04-04 16:29   ` Oliver Kiddle
  2003-04-04 20:41   ` Vincent Lefevre
  1 sibling, 0 replies; 4+ messages in thread
From: Oliver Kiddle @ 2003-04-04 16:29 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-users

Peter wrote:
> Vincent Lefevre wrote:
> > zsh should return an exit status 0 when unsetting a variable that was
> > not previously set.
> >
> > See
> >   http://www.opengroup.org/onlinepubs/007904975/utilities/unset.html
> 
> I think you're probably right, but it's not completely clear.  The page
> you quote explicitly says:

I queried Chet about this when it was changed in bash (about a year
ago) and got this response:

    I got a bug report or two, and decided that the new behavior is
    what POSIX.2 intended.  It seems to be what sh has always done.

    It's still open to debate, though.  I can be convinced otherwise.

I never made up my mind to do anything in part because ksh93 does the
same as zsh but it is probably right. Also, at the moment, it seems
that for an readonly variable, it is returning 0 which is clearly
wrong.

> Now, if it doesn't exist, it can't be unset, but I think by `unset' they
> mean `rendered such that it is not set whether or not it was before',
> which is your interpretation.

It seems a fair interpretation. Perhaps could be wise to have it
clarified though.

Oliver


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unsetting a variable that was not previously set
  2003-04-04 16:09 ` Peter Stephenson
  2003-04-04 16:29   ` Oliver Kiddle
@ 2003-04-04 20:41   ` Vincent Lefevre
  1 sibling, 0 replies; 4+ messages in thread
From: Vincent Lefevre @ 2003-04-04 20:41 UTC (permalink / raw)
  To: zsh-users

On Fri, Apr 04, 2003 at 17:09:49 +0100, Peter Stephenson wrote:
> I think you're probably right, but it's not completely clear.  The page
> you quote explicitly says:
> 
> EXIT STATUS
> 
>      0
>         All name operands were successfully unset.
>     >0
>         At least one name could not be unset.
> 
> Now, if it doesn't exist, it can't be unset,

I don't think that a variable needs to exist in order to be unset.
I think that 'unset' is just a special status (or "value") for the
variable (a bit like 'undef' in Perl). So, we have the following
interpretation:

> but I think by `unset' they mean `rendered such that it is not set
> whether or not it was before', which is your interpretation.

and I think that this is the goal of the following sentence to make
things clear about this problem:

> > "Unsetting a variable or function that was not previously set shall
> > not be considered an error and does not cause the shell to abort."
> 
> It doesn't cause the shell to abort currently.  The terminology in the
> introduction does suggest `error' is more or less synonymous with
> `non-zero return code', but I can find no normative indication of
> whether this applies to the language used for the special builtins.

I could only find

  http://www.opengroup.org/onlinepubs/007904975/utilities/xcu_chap01.html

Under "EXIT STATUS": "Usually, utilities return zero for successful
completion and values greater than zero for various error conditions."

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-04-04 20:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-04 15:49 Unsetting a variable that was not previously set Vincent Lefevre
2003-04-04 16:09 ` Peter Stephenson
2003-04-04 16:29   ` Oliver Kiddle
2003-04-04 20:41   ` Vincent Lefevre

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).