mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			231 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
-----------------
 | 
						|
THE Z SHELL (ZSH)
 | 
						|
-----------------
 | 
						|
 | 
						|
Version
 | 
						|
-------
 | 
						|
 | 
						|
This is version 4.3.4 of the shell.  This is a development release,
 | 
						|
but is believed to be reasonably stable.  Sites where the users need to
 | 
						|
edit command lines with multibyte characters (in particular UTF-8)
 | 
						|
will probably want to upgrade.
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Features
 | 
						|
--------
 | 
						|
 | 
						|
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
 | 
						|
behaviour.
 | 
						|
 | 
						|
The variable BAUD is no longer set automatically by the shell.
 | 
						|
In previous versions it was set to the baud rate reported by
 | 
						|
the terminal driver in order to initialise the line editor's
 | 
						|
compensation mechanism for slow baud rates.  However, the baud
 | 
						|
rate so reported is very rarely related to the limiting speed of
 | 
						|
screen updates on modern systems.  Users who need the compensation
 | 
						|
mechanism should set BAUD to an appropriate rate by hand.
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Parameter substitutions in the form ${param//#%search/replace} match
 | 
						|
against "search" anchored at both ends of the parameter value.  Previously
 | 
						|
this syntax would have matched against "%search", anchored only at the head
 | 
						|
of the value.  The form ${param//#$search/replace} where the value
 | 
						|
$search starts with "%" considers the "%" to be part of the search
 | 
						|
string as before.
 | 
						|
 | 
						|
The MULTIBYTE option is on by default where it is available; this
 | 
						|
causes many operations to recognise characters as in the current locale.
 | 
						|
Older versions of the shell always assumed a character was one byte.
 | 
						|
In some places the width of the character will be used; this is transparent
 | 
						|
when used for calculations of screen position, but also occurs, for
 | 
						|
example, in calculations of padding width.
 | 
						|
 | 
						|
Zsh has previously been lax about whether it allows octets with the
 | 
						|
top bit set to be part of a shell identifier.  Older versions of the shell
 | 
						|
assumed all such octets were allowed in identifiers, however the POSIX
 | 
						|
standard does not allow such characters in identifiers.  The older
 | 
						|
behaviour is still obtained with --disable-multibyte in effect.
 | 
						|
With --enable-multibyte in effect (this is now the default anywhere
 | 
						|
it is supported) there are three possible cases:
 | 
						|
  MULTIBYTE option unset:  only ASCII characters are allowed; the
 | 
						|
    shell does not attempt to identify non-ASCII characters at all.
 | 
						|
  MULTIBYTE option set, POSIX_IDENTIFIERS option unset: in addition
 | 
						|
    to the POSIX characters, any alphanumeric characters in the
 | 
						|
    local character set are allowed.  Note that scripts and functions that
 | 
						|
    take advantage of this are non-portable; however, this is in the spirit
 | 
						|
    of previous versions of the shell.  Note also that the options must
 | 
						|
    be set before the shell parses the script or function; setting
 | 
						|
    them during execution is not sufficient.
 | 
						|
  MULITBYTE option set, POSIX_IDENTIFIERS set:  only ASCII characters
 | 
						|
    are allowed in identifiers even though the shell will recognise
 | 
						|
    alphanumeric multibyte characters.
 | 
						|
 | 
						|
The sched builtin now keeps entries in time order.  This means that
 | 
						|
after adding an entry the index of an existing entry used for deletion
 | 
						|
may change, if that entry had a later time than the new entry.  However,
 | 
						|
deleting a entry with a later time will now never change the index of an
 | 
						|
entry with an earlier time, which could happen with the previous method.
 | 
						|
 | 
						|
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 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.
 | 
						|
 | 
						|
Documentation
 | 
						|
-------------
 | 
						|
 | 
						|
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
 | 
						|
		ftp://yodl.sourceforge.net/
 | 
						|
 | 
						|
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
 | 
						|
		Makefile.
 | 
						|
 | 
						|
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
 | 
						|
		introduction.
 | 
						|
 | 
						|
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
 | 
						|
--------
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Contributors
 | 
						|
------------
 | 
						|
 | 
						|
The people who have contributed to this software project are listed
 | 
						|
in Etc/CONTRIBUTORS.
 |