zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: More rabbit-holes with unset variables
Date: Thu, 26 Nov 2020 13:13:23 -0800	[thread overview]
Message-ID: <CAH+w=7bxavq4DMJtTmSAGTOSoXKsFaXPVyUAGqN1cZLF=+57JQ@mail.gmail.com> (raw)
In-Reply-To: <86243-1606389706.499549@-gQx.nNYG.4Z3k>

On Thu, Nov 26, 2020 at 3:22 AM Oliver Kiddle <opk@zsh.org> wrote:
>
> It appears that export VAR will not export an empty VAR even in zsh
> (unless you do VAR=""). So zsh's not exactly consistent.
> typeset [-x] is arguably just a variant of export.

Neither is a variant of the other; "export" is an alias for "typeset
-xg" that happens to be implemented as a reserved word.

> This does change how I regard zsh's behaviour. It isn't zsh taking a
> different but equally valid approach on an extension but an sh
> incompatibility. It once was a bug even if now too entrenched.

It doesn't export the empty string at the time the parameter is
declared, but it does consistently set it to empty string internally:

% Src/zsh -f
% export FOOBAR
% typeset -p FOOBAR
export FOOBAR=''
%

If it were NOT set, as after "unset FOOBAR", then "typeset -p" would
print nothing.

> It does make the KSH_TYPESET option somewhat less appropriate because
> this effect also applies to sh emulation.

We could do this when EMULATION(EMULATE_KSH|EMULATE_SH) instead of on an option.

If we are in fact limiting it to variables with no "strong type" type
then it really is sufficient to create an unset variable, except that
we somehow have to signal to "typeset -p" that it should print the
declaration even though the variable appears to be unset.

The latter raises the question of whether we want the Bash behavior of
continuing to print the declaration even after an explicit "unset",
which differs from ksh (cf. my first message in this thread).



  parent reply	other threads:[~2020-11-26 21:13 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-25  7:02 Bart Schaefer
2020-11-25 13:19 ` Stephane Chazelas
2020-11-25 22:17   ` Felipe Contreras
2020-11-26  6:10     ` Stephane Chazelas
2020-11-26  7:20       ` Felipe Contreras
2020-11-26 11:21         ` Oliver Kiddle
2020-11-26 11:29           ` Roman Perepelitsa
2020-11-26 19:08             ` Felipe Contreras
2020-11-26 19:29           ` Felipe Contreras
2020-11-26 21:13           ` Bart Schaefer [this message]
2020-11-26 21:31             ` Felipe Contreras
2020-11-26 23:29               ` Bart Schaefer
2020-11-26 23:32                 ` Bart Schaefer
2020-11-26 23:53                 ` Felipe Contreras
2020-11-27  0:23                   ` Bart Schaefer
2020-11-27  1:51                     ` Felipe Contreras
2020-11-27 20:01                       ` Bart Schaefer
2020-11-27 21:49                         ` Felipe Contreras
2020-11-27 22:06                           ` Bart Schaefer
2020-11-27 23:35                             ` Felipe Contreras
2020-11-26 22:07       ` Bart Schaefer
2020-11-26 20:41     ` Bart Schaefer
2020-11-26 20:49       ` Stephane Chazelas
2020-11-26 21:20       ` Felipe Contreras
2020-11-26 22:41         ` Bart Schaefer
2020-11-26 23:45           ` Felipe Contreras
2020-11-27  0:09             ` Bart Schaefer
2020-11-27  0:30               ` Felipe Contreras
2020-11-27  0:51                 ` Bart Schaefer
2020-11-27  1:30                   ` Felipe Contreras
2020-11-27 20:54                     ` Bart Schaefer
2020-11-27 22:10                       ` Felipe Contreras
2020-11-27 22:39                         ` Bart Schaefer
2020-11-28  0:00                           ` Felipe Contreras
2020-11-28  0:04                             ` Bart Schaefer
2020-11-28 10:52                               ` Felipe Contreras
2020-11-28  0:36                             ` The emulation rabbit-hole RE typeset/unset Bart Schaefer
2020-11-28 11:35                               ` Felipe Contreras
2020-11-28 16:56                                 ` Bart Schaefer
2020-12-01  8:49                                   ` Felipe Contreras

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='CAH+w=7bxavq4DMJtTmSAGTOSoXKsFaXPVyUAGqN1cZLF=+57JQ@mail.gmail.com' \
    --to=schaefer@brasslantern.com \
    --cc=zsh-workers@zsh.org \
    /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).