about summary refs log tree commit diff


This is zsh version 4.2.6.  This is a stable version.

Installing Zsh

The instructions for compiling zsh are in the file INSTALL.  You should
also check the file MACHINES in the top directory to see if there
are any special instructions for your particular architecture.


Zsh is a shell with lots of features.  For a list of some of these, see the
file FEATURES, and for the latest changes see NEWS.  For more
details, see the documentation.

Possible incompatibilities

Since 4.2:

The option SH_WORD_SPLIT, used in Bourne/Korn/Posix shell compatibility
mode, has been made more like other shells in the case of substitutions of
the form ${1+"$@"} (a common trick used to work around problems in older
Bourne shells) or any of the related forms with the + replaced by - or =
with an optional colon preceding.  Previously, with SH_WORD_SPLIT in
effect, this expression would cause splitting on all white space in the
shell arguments.  (This was always regarded as a bug but was long-standing
behaviour.)  Now it is treated identically to "$@".  The same change
applies to expressions with forced splitting such as ${=1+"$@"}, but
otherwise the case where SH_WORD_SPLIT is not set is unaffected.

The "unset" builtin now does not regard the unsetting of non-existent
variables as an error, so can still return status 0 (depending on the
handling of other arguments).  This appears to be the standard shell

The variable HOME is no longer set by the shell if zsh is emulating any
other shell at startup; it must be present in the environment or set
subsequently by the user.  It is valid for the variable to be unset.

Zsh has previously been lax about whether it allows octets with the
top bit set to be part of a shell identifier.  With --enable-multibyte set,
this is now completely disabled.  This is a temporary fix until the main
shell handles multibyte characters properly and the appropriate library
tests can be used.  This change may be reviewed if no such permanent fix
is forthcoming.

The completion style pine-directory must now be set to use completion
for PINE mailbox folders; previously it had the default ~/mail.  This
change was necessary because otherwise recursive directories under
~/mail were searched by default, which could be a considerable unnecessary
hit for anyone not using PINE.  The previous default can be restored with:
  zstyle ':completion:*' pine-directory ~/mail

The completion style fake-files now allows patterns as directories,
for example the value '/home/*:.snapshot' is now valid.  This will
only cause problems in the unlikely event that a directory in the style
has a pattern character in it.

The default maximum function depth (configurable with
--enable-max-function-depth) has been decreased to 1000 from 4096.  The
previous value was observed to be large enough that crashes still occurred
on some fairly common PC configurations.  This change is only likely to
affect some highly specialised uses of the shell.

The variables HISTCHARS and histchars now reject any attempt to
set non-ASCII characters for history or comments.  Multibyte characters
have never worked and the most consistent change was to restrict the
set to portable characters only.


There are a number of documents about zsh in this distribution:

Doc/Zsh/*.yo	The master source for the zsh documentation is written in
		yodl.  Yodl is a document language written by Karel Kubat.
		It is not required by zsh but but it is a nice program so
		you might want to get it anyway, especially if you are a
		zsh developer.  It can be downloaded from

Doc/zsh*.1	Man pages in nroff format.  These will be installed
		by "make install.man" or "make install".  By default,
		these will be installed in /usr/local/man/man1, although
		you can change this with the --mandir option to configure
		or editing the user configuration section of the top level

Doc/zsh.texi	Everything the man pages have, but in texinfo format.  These
		will be installed by "make install.info" or "make install".
		By default, these will be installed in /usr/local/info,
		although you can change this with the --infodir option to
		configure or editing the user configuration section of the
		top level Makefile.  Version 4.0 or above of the
		Texinfo tools are recommended for processing this file.

Also include in the distribution are:

Doc/intro.ms	An introduction to zsh in troff format using the ms
		macros.  This document explains many of the features
		that make zsh more equal than other shells.
		Unfortunately this is based on zsh-2.5 so some examples
		may not work without changes but it is still a good

For more information, see the website, as described in the META-FAQ.

If you do not have the necessary tools to process these documents, PDF,
Info and DVI versions are available in the separate file zsh-doc.tar.gz at
the archive sites listed in the META-FAQ.

The distribution also contains a Perl script in Utils/helpfiles which
can be used to extract the descriptions of builtin commands from the
zshbuiltins manual page.  See the comments at the beginning of the
script about its usage.  The files created by this script can be used
by example function run-help located in the subdirectory Functions/Misc to
show information about zsh builtins and run `man' on external commands.
For this the shell variable HELPDIR should point to a directory containing
the files generated by the helpfiles script.  run-help should be
unaliased before loading the run-help function.  After that this function
will be executed by the run-help ZLE function which is by default bound
to ESC-h in emacs mode.


Examples of zsh startup files are located in the subdirectory
StartupFiles.  Examples of zsh functions and scripts are located in
the subdirectory Functions.  Examples of completion control commands
(compctl) are located in the file Misc/compctl-examples.

Zsh FTP Sites, Web Pages, and Mailing Lists

The current list of zsh FTP sites, web pages, and mailing lists can be
found in the META-FAQ.  A copy is included in this distribution and is
available separately at any of the zsh FTP sites.

Common Problems and Frequently Asked Questions

Zsh has a list of Frequently Asked Questions (FAQ) maintained by Peter
Stephenson <pws@zsh.org>.  It covers many common problems encountered
when building, installing, and using zsh.  A copy is included in this
distribution in Etc/FAQ and is available separately at any of the zsh
ftp sites.

Zsh Maintenance and Bug Reports

Zsh is currently maintained by the members of the zsh-workers mailing list
and coordinated by Peter Stephenson <coordinator@zsh.org>.  Please send
any feedback and bugs reports to <zsh-workers@sunsite.dk>.

Reports are most helpful if you can reproduce the bug starting zsh with
the -f option.  This skips the execution of local startup files except
/etc/zshenv.  If a bug occurs only when some options set try to locate
the option which triggers the bug.

There is a script "reporter" in the subdirectory Util which will print out
your current shell environment/setup.  If you cannot reproduce the bug
with "zsh -f", use this script and include the output from sourcing this
file.  This way, the problem you are reporting can be recreated.

The known bugs in zsh are listed in the file Etc/BUGS.  Check this as
well as the Frequently Asked Questions (FAQ) list before sending a bug
report.  Note that zsh has some features which are not compatible with
sh but these are not bugs.  Most of these incompatibilities go away
when zsh is invoked as sh or ksh (e.g. using a symbolic link).

If you send a bug report to the list and are not a subscriber, please
mention this in your message if you want a response.

If you would like to contribute to the development and maintenance of zsh,
then you should join the zsh-workers mailing list (check the META-FAQ
for info on this).  You should also read the "zsh-development-guide"
located in the subdirectory Util.


The people who have contributed to this software project are listed