Here are some of the more well-known ones, very roughly in decreasing order of significance. Many of these can also be counted against differences from ksh in question 2.1; note that this applies to the latest beta version and that simple bugs are often fixed quite quickly. There is a file Etc/BUGS in the source distribution with more detail.
time
is ignored with builtins and can't be used with {...}
.
set -x
(setopt xtrace
) still has a few glitches.
u
can go past the original modification point.
r
command does not work inside $(...)
or `...`
expansions. (A fix for this will appear shortly.)
typeset
handling is non-optimal, particularly with regard to
flags, and is ksh-incompatible in unpredictable ways.
Note that a few recent changes introduce incompatibilities (these are not bugs):
Changes after zsh 3.0 (3.1.x is still currently in beta):
history-search-{forward,backward}
(bound to \M-n
, \M-p
)
now only find previous lines where the first word is the same as the
current one. For example,
comp -edit emacs
, but not
compress file
any more. For an approximation to the old
behaviour, use history-beginning-search-{forward,backward}
which
search for a line with the same prefix up to the cursor position.
^[O
instead of ^[[
). The
rationale is that the insert mode and command mode keymaps for
keys with prefixes are now separate.
Changes since zsh 2.5:
$1=$2
will not work. You can use something like eval
"$1=\$2"
, which should have the identical effect.
TRAPINT()
{...}
) work as before.
[[
is a reserved word, hence must be separated from
other characters by whitespace; {
and }
are also reserved
words if the IGNORE_BRACES option is set.
if ( ... ) ...
executes the code in parentheses in a subshell. To make this
useful, the syntax expected after an if
, etc., is less strict
than in other shells.
foo=(*)
is and has always been the
consistent way of doing this.)
<>
performs redirection of input and output to the specified file.
For numeric globs, you now need <->
.
exec
, noglob
, command
,
-
are now treated more like builtin commands: previously they were
syntactically special. This should make it easier to perform tricks with
them (disabling, hiding in parameters, etc.).
~
's for directory stack substitution
instead of =
's. This is for consistency: all other directory
substitution (~user
, ~name
, ~+
, ...) used a tilde, while
=<number>
caused problems with =program
substitution.
$HISTCHARS
variable is now $histchars
. Currently both
are tied together for compatibility.
%
; history is now %!
, not
!
. Backslashes are no longer special.
The shell is being maintained by various (entirely self-appointed) subscribers to the mailing list,
Please note when reporting bugs that many exist only on certain architectures, which the developers may not have access to. In this case debugging information, as detailed as possible, is particularly welcome.
Two progressively lower volume lists exist, one with messages concerning the use of zsh,
Note that you should only join one of these lists: people on zsh-workers receive all the lists, and people on zsh-users will also receive the announcements list.
The lists are handled by an automated server. The instructions for zsh-announce and zsh-users are the same as for zsh-workers: just change zsh-workers to whatever in the following.
To join zsh-workers, send email to
The list from May 1992 to May 1995 is archived in ftp://ftp.sterling.com/zsh/zsh-list/YY-MM where YY-MM are the year and month in digits.
Of course, you can also post zsh queries to the Usenet group comp.unix.shell; if all else fails, you could even e-mail me.
With version 3, the code is much cleaner than before, but still bears the marks of the ages and many things could be done much better with a rewrite. A more efficient set of code for lexing/parsing/execution might also be an advantage. Volunteers are particularly welcome for these tasks.
An improved line editor, with user-definable functions and binding of multiple functions to keystrokes, is being developed.
Thanks to zsh-list, in particular Bart Schaefer, for suggestions regarding this document. Zsh has been in the hands of archivists Jim Mattson, Bas de Bakker, Richard Coleman and Zoltan Hidvegi, and the mailing list has been run by Peter Gray, Rick Ohnemus and Richard Coleman, all of whom deserve thanks. The world is eternally in the debt of Paul Falstad for inventing zsh in the first place (though the wizzo extended completion is by Sven Wischnowsky).
This document is copyright (C) P.W. Stephenson, 1995, 1996, 1997. This text originates in the U.K. and the author asserts his moral rights under the Copyrights, Designs and Patents Act, 1988.
Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this documentation for any purpose, provided that the above copyright notice appears in all copies of this documentation. Remember, however, that this document changes monthly and it may be more useful to provide a pointer to it rather than the entire text. A suitable pointer is "information on the Z-shell can be obtained on the World Wide Web at URL http://www.peak.org/zsh/".