Re: Zsh's and ksh's bang (!) expansion flags have different meanings

Bart Schaefer <[email protected]> Sun, 19 Jul 2026 09:22:28 -0700
Newsgroups gmane.comp.shells.zsh.devel
Message-ID <CAH+w=7Zd1Ov6XHYom1Ybs5oSujPyUTzX4213dMP968L53O7WEw@mail.gmail.com>
--000000000000dc18530656f93211
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, Jul 19, 2026 at 8:51=E2=80=AFAM Philippe Altherr <philippe.altherr@=
gmail.com>
wrote:

> In some recent work I noticed that Zsh's and ksh's bang (!) expansion
> flags have different meanings. I don't think this is problematic but othe=
r
> people might disagree and as this difference wasn't obvious to me I thoug=
ht
> it was worth mentioning here.
>

You're not noticing anything new, or rather the only thing new that you're
noticing is that the (!) flag exists at all.  Zsh never had (!) until I
started working on named references, because using ! for anything other
than history was a problem in interactive shells (still is).

--000000000000dc18530656f93211
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, Jul 19,=
 2026 at 8:51=E2=80=AFAM Philippe Altherr &lt;<a href=3D"mailto:philippe.al=
[email protected]">[email protected]</a>&gt; wrote:<br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">In some recent =
work I noticed that=C2=A0Zsh&#39;s and ksh&#39;s bang (!) expansion flags h=
ave different meanings. I don&#39;t think this is problematic but other peo=
ple might disagree and as this difference wasn&#39;t obvious to me I though=
t it was worth mentioning here.</div></blockquote><div><br></div><div>You&#=
39;re not noticing anything new, or rather the only thing new that you&#39;=
re noticing is that the (!) flag exists at all.=C2=A0 Zsh never had (!) unt=
il I started working on named references, because using ! for anything othe=
r than history was a problem in interactive shells (still is).=C2=A0</div><=
/div></div>

--000000000000dc18530656f93211--