zsh

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
ZSH(1)								       ZSH(1)



NAME
       zsh - the Z shell

OVERVIEW
       Because zsh contains many features, the zsh manual has been split into
       a number of sections:

       zsh	    Zsh overview (this section)
       zshmisc	    Anything not fitting into the other sections
       zshexpn	    Zsh command and parameter expansion
       zshparam	    Zsh parameters
       zshoptions   Zsh options
       zshbuiltins  Zsh built-in functions
       zshzle	    Zsh command line editing
       zshcompwid   Zsh completion widgets
       zshcompsys   Zsh completion system
       zshcompctl   Zsh completion control
       zshmodules   Zsh loadable modules
       zshzftpsys   Zsh built-in FTP client
       zshall	    Meta-man page containing all of the above

DESCRIPTION
       Zsh is a UNIX command interpreter (shell)  usable  as  an  interactive
       login  shell and as a shell script command processor.  Of the standard
       shells, zsh most closely resembles ksh but includes many enhancements.
       Zsh  has	 command  line	editing,  builtin  spelling  correction, pro-
       grammable command completion, shell functions  (with  autoloading),  a
       history mechanism, and a host of other features.

AUTHOR
       Zsh  was	 originally written by Paul Falstad <pf@zsh.org>.  Zsh is now
       maintained by the members of the zsh-workers mailing  list  <zsh-work-
       ers@sunsite.dk>.	  The  development  is currently coordinated by Peter
       Stephenson <pws@zsh.org>.  The coordinator can be contacted at  <coor-
       dinator@zsh.org>, but matters relating to the code should generally go
       to the mailing list.

AVAILABILITY
       Zsh is available from the following anonymous FTP sites.	 These mirror
       sites  are  kept frequently up to date.	The sites marked with (H) may
       be mirroring ftp.cs.elte.hu instead of the primary site.

       Primary site
	      ftp://ftp.zsh.org/pub/zsh/
	      http://www.zsh.org/pub/zsh/

       Australia
	      ftp://ftp.zsh.org/pub/zsh/
	      http://www.zsh.org/pub/zsh/

       Denmark
	      ftp://sunsite.dk/pub/unix/shells/zsh/

       Finland
	      ftp://ftp.funet.fi/pub/unix/shells/zsh/

       Germany
	      ftp://ftp.fu-berlin.de/pub/unix/shells/zsh/  (H)
	      ftp://ftp.gmd.de/packages/zsh/
	      ftp://ftp.uni-trier.de/pub/unix/shell/zsh/

       Hungary
	      ftp://ftp.cs.elte.hu/pub/zsh/
	      http://www.cs.elte.hu/pub/zsh/
	      ftp://ftp.kfki.hu/pub/packages/zsh/

       Israel
	      ftp://ftp.math.technion.ac.il/pub/zsh/
	      http://www.math.technion.ac.il/pub/zsh/

       Japan
	      ftp://ftp.win.ne.jp/pub/shell/zsh/
	      ftp://ftp.ayamura.org/pub/zsh/

       Korea
	      ftp://linux.sarang.net/mirror/system/shell/zsh/

       Netherlands
	      ftp://ftp.demon.nl/pub/mirrors/zsh/

       Norway
	      ftp://ftp.uit.no/pub/unix/shells/zsh/

       Poland
	      ftp://sunsite.icm.edu.pl/pub/unix/shells/zsh/

       Romania
	      ftp://ftp.roedu.net/pub/mirrors/ftp.zsh.org/pub/zsh/
	      ftp://ftp.kappa.ro/pub/mirrors/ftp.zsh.org/pub/zsh/

       Slovenia
	      ftp://ftp.siol.net/mirrors/zsh/

       Sweden
	      ftp://ftp.lysator.liu.se/pub/unix/zsh/

       UK
	      ftp://ftp.net.lut.ac.uk/zsh/
	      ftp://sunsite.org.uk/packages/zsh/

       USA
	      ftp://uiarchive.uiuc.edu/mirrors/ftp/ftp.zsh.org/pub/
	      ftp://ftp.rge.com/pub/shells/zsh/
	      http://zsh.disillusion.org/
	      http://foad.org/zsh/

       The up-to-date source code is available via anonymous CVS from Source-
       forge.  See http://sourceforge.net/projects/zsh/ for details.


MAILING LISTS
       Zsh has 3 mailing lists:

       <zsh-announce@sunsite.dk>
	      Announcements  about  releases,  major changes in the shell and
	      the monthly posting of the Zsh FAQ.  (moderated)

       <zsh-users@sunsite.dk>
	      User discussions.

       <zsh-workers@sunsite.dk>
	      Hacking, development, bug reports and patches.

       To subscribe or unsubscribe, send mail to the  associated  administra-
       tive address for the mailing list.

       <zsh-announce-subscribe@sunsite.dk>
       <zsh-users-subscribe@sunsite.dk>
       <zsh-workers-subscribe@sunsite.dk>
       <zsh-announce-unsubscribe@sunsite.dk>
       <zsh-users-unsubscribe@sunsite.dk>
       <zsh-workers-unsubscribe@sunsite.dk>

       YOU  ONLY  NEED	TO  JOIN ONE OF THE MAILING LISTS AS THEY ARE NESTED.
       All  submissions	 to  zsh-announce  are	automatically  forwarded   to
       zsh-users.   All	 submissions to zsh-users are automatically forwarded
       to zsh-workers.

       If you have problems subscribing/unsubscribing to any of	 the  mailing
       lists, send mail to <listmaster@zsh.org>.  The mailing lists are main-
       tained by Karsten Thygesen <karthy@kom.auc.dk>.

       The mailing lists are archived; the archives can be accessed  via  the
       administrative  addresses  listed  above.   There  is also a hypertext
       archive,	 maintained  by	 Geoff	Wing  <gcw@zsh.org>,   available   at
       http://www.zsh.org/mla/.

THE ZSH FAQ
       Zsh  has	 a  list  of  Frequently Asked Questions (FAQ), maintained by
       Peter Stephenson <pws@zsh.org>.	It is regularly posted to  the	news-
       group  comp.unix.shell  and the zsh-announce mailing list.  The latest
       version	can  be	 found	at  any	 of  the  Zsh  FTP   sites,   or   at
       http://www.zsh.org/FAQ/.	  The contact address for FAQ-related matters
       is <faqmaster@zsh.org>.

THE ZSH WEB PAGE
       Zsh has a web page which is located at http://www.zsh.org/.   This  is
       maintained  by  Karsten Thygesen <karthy@zsh.org>, of SunSITE Denmark.
       The contact address for web-related matters is <webmaster@zsh.org>.

THE ZSH USERGUIDE
       A userguide is currently in preparation.	 It is intended to complement
       the manual, with explanations and hints on issues where the manual can
       be cabbalistic, hierographic, or downright  mystifying  (for  example,
       the word ‘hierographic’ does not exist).	 It can be viewed in its cur-
       rent state at http://zsh.sunsite.dk/Guide/.  At the time	 of  writing,
       chapters	 dealing  with	startup	 files and their contents and the new
       completion system were essentially complete.

THE ZSH WIKI
       A ‘wiki’ website for zsh has been created at  http://www.zshwiki.org/.
       This  is	 a  site which can be added to and modified directly by users
       without any special permission.	You can add your  own  zsh  tips  and
       configurations.

INVOCATION OPTIONS
       The  following  flags  are  interpreted	by  the shell when invoked to
       determine where the shell will read commands from:

       -c     Take the first argument as a command to  execute,	 rather	 than
	      reading  commands from a script or standard input.  If any fur-
	      ther arguments are given, the first  one	is  assigned  to  $0,
	      rather than being used as a positional parameter.

       -i     Force shell to be interactive.

       -s     Force  shell  to read commands from the standard input.  If the
	      -s flag is not present and an  argument  is  given,  the	first
	      argument is taken to be the pathname of a script to execute.

       After  the  first  one  or  two	arguments  have	 been appropriated as
       described above, the remaining arguments are  assigned  to  the	posi-
       tional parameters.

       For  further  options,  which  are  common  to  invocation and the set
       builtin, see zshoptions(1).

       Options may be specified by name using the -o option.  -o acts like  a
       single-letter option, but takes a following string as the option name.
       For example,

	      zsh -x -o shwordsplit scr

       runs the script scr, setting the XTRACE option  by  the	corresponding
       letter  ‘-x’  and  the  SH_WORD_SPLIT  option by name.  Options may be
       turned off by name by using +o instead of -o.  -o can  be  stacked  up
       with preceding single-letter options, so for example ‘-xo shwordsplit’
       or ‘-xoshwordsplit’ is equivalent to ‘-x -o shwordsplit’.

       Options may also be specified  by  name	in  GNU	 long  option  style,
       ‘--option-name’.	 When this is done, ‘-’ characters in the option name
       are permitted: they are translated into ‘_’, and	 thus  ignored.	  So,
       for  example, ‘zsh --sh-word-split’ invokes zsh with the SH_WORD_SPLIT
       option turned on.  Like other option syntaxes, options can  be  turned
       off by replacing the initial ‘-’ with a ‘+’; thus ‘+-sh-word-split’ is
       equivalent to ‘--no-sh-word-split’.   Unlike  other  option  syntaxes,
       GNU-style  long	options	 cannot be stacked with any other options, so
       for example ‘-x-shwordsplit’ is an error, rather	 than  being  treated
       like ‘-x --shwordsplit’.

       The special GNU-style option ‘--version’ is handled; it sends to stan-
       dard output the shell’s version information, then exits	successfully.
       ‘--help’	 is  also  handled;  it	 sends	to  standard output a list of
       options that can be used when invoking the shell, then exits  success-
       fully.

       Option  processing  may be finished, allowing following arguments that
       start with ‘-’ or ‘+’ to be treated as normal arguments, in two	ways.
       Firstly, a lone ‘-’ (or ‘+’) as an argument by itself ends option pro-
       cessing.	 Secondly, a special option ‘--’  (or  ‘+-’),  which  may  be
       specified  on  its  own	(which is the standard POSIX usage) or may be
       stacked with preceding options (so ‘-x-’ is equivalent  to  ‘-x	--’).
       Options	are  not  permitted to be stacked after ‘--’ (so ‘-x-f’ is an
       error), but note the GNU-style  option  form  discussed	above,	where
       ‘--shwordsplit’ is permitted and does not end option processing.

       Except  when the sh/ksh emulation single-letter options are in effect,
       the option ‘-b’ (or ‘+b’) ends option processing.  ‘-b’ is like	‘--’,
       except  that  further  single-letter  options can be stacked after the
       ‘-b’ and will take effect as normal.



COMPATIBILITY
       Zsh tries to emulate sh or ksh when it is invoked as sh or ksh respec-
       tively;	more  precisely,  it looks at the first letter of the name by
       which it was invoked, excluding any initial ‘r’ (assumed to stand  for
       ‘restricted’),  and  if	that is ‘s’ or ‘k’ it will emulate sh or ksh.
       Furthermore, if invoked as su (which happens on certain	systems	 when
       the  shell  is executed by the su command), the shell will try to find
       an alternative name from the SHELL environment  variable	 and  perform
       emulation based on that.

       In  sh  and  ksh	 compatibility modes the following parameters are not
       special and not initialized by the shell: ARGC, argv, cdpath, fignore,
       fpath,  HISTCHARS,  mailpath,  MANPATH, manpath, path, prompt, PROMPT,
       PROMPT2, PROMPT3, PROMPT4, psvar, status, watch.

       The usual zsh startup/shutdown scripts are not executed.	 Login shells
       source  /etc/profile  followed by $HOME/.profile.  If the ENV environ-
       ment variable is set on invocation, $ENV is sourced after the  profile
       scripts.	  The  value of ENV is subjected to parameter expansion, com-
       mand substitution, and arithmetic expansion before  being  interpreted
       as  a pathname.	Note that the PRIVILEGED option also affects the exe-
       cution of startup files.

       The following options are set if the shell is invoked as	 sh  or	 ksh:
       NO_BAD_PATTERN,	  NO_BANG_HIST,	  NO_BG_NICE,	NO_EQUALS,   NO_FUNC-
       TION_ARGZERO, GLOB_SUBST, NO_GLOBAL_EXPORT,  NO_HUP,  INTERACTIVE_COM-
       MENTS,  KSH_ARRAYS, NO_MULTIOS, NO_NOMATCH, NO_NOTIFY, POSIX_BUILTINS,
       NO_PROMPT_PERCENT,   RM_STAR_SILENT,    SH_FILE_EXPANSION,    SH_GLOB,
       SH_OPTION_LETTERS,   SH_WORD_SPLIT.   Additionally  the	BSD_ECHO  and
       IGNORE_BRACES options are set if zsh is	invoked	 as  sh.   Also,  the
       KSH_OPTION_PRINT,   LOCAL_OPTIONS,   PROMPT_BANG,   PROMPT_SUBST	  and
       SINGLE_LINE_ZLE options are set if zsh is invoked as ksh.

RESTRICTED SHELL
       When the basename of the command used to invoke zsh  starts  with  the
       letter  ‘r’ or the ‘-r’ command line option is supplied at invocation,
       the shell becomes restricted.   Emulation  mode	is  determined	after
       stripping  the letter ‘r’ from the invocation name.  The following are
       disabled in restricted mode:

       ·      changing directories with the cd builtin

       ·      changing or unsetting the PATH, path, MODULE_PATH, module_path,
	      SHELL,  HISTFILE,	 HISTSIZE,  GID,  EGID,	 UID, EUID, USERNAME,
	      LD_LIBRARY_PATH,	  LD_AOUT_LIBRARY_PATH,	   LD_PRELOAD	  and
	      LD_AOUT_PRELOAD parameters

       ·      specifying command names containing /

       ·      specifying command pathnames using hash

       ·      redirecting output to files

       ·      using  the  exec	builtin	 command  to  replace  the shell with
	      another command

       ·      using jobs -Z to overwrite  the  shell  process’	argument  and
	      environment space

       ·      using the ARGV0 parameter to override argv[0] for external com-
	      mands

       ·      turning off restricted mode with set +r or unsetopt RESTRICTED

       These restrictions are enforced after processing	 the  startup  files.
       The  startup  files should set up PATH to point to a directory of com-
       mands which can be safely invoked in the restricted environment.	 They
       may also add further restrictions by disabling selected builtins.

       Restricted  mode	 can  also  be	activated  any	time  by  setting the
       RESTRICTED option.  This	 immediately  enables  all  the	 restrictions
       described  above even if the shell still has not processed all startup
       files.

STARTUP/SHUTDOWN FILES
       Commands are first read from /etc/zshenv; this cannot  be  overridden.
       Subsequent  behaviour  is  modified by the RCS and GLOBAL_RCS options;
       the former affects all startup files, while the	second	only  affects
       those  in  the  /etc directory.	If one of the options is unset at any
       point, any subsequent startup file(s) of the corresponding  type	 will
       not  be read.  It is also possible for a file in $ZDOTDIR to re-enable
       GLOBAL_RCS. Both RCS and GLOBAL_RCS are set by default.

       Commands are then read from $ZDOTDIR/.zshenv.  If the shell is a login
       shell,  commands	 are read from /etc/zprofile and then $ZDOTDIR/.zpro-
       file.  Then, if the shell  is  interactive,  commands  are  read	 from
       /etc/zshrc and then $ZDOTDIR/.zshrc.  Finally, if the shell is a login
       shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.

       When a  login  shell  exits,  the  files	 $ZDOTDIR/.zlogout  and	 then
       /etc/zlogout  are read.	This happens with either an explicit exit via
       the  exit  or  logout  commands,	 or  an	 implicit  exit	 by   reading
       end-of-file  from  the terminal.	 However, if the shell terminates due
       to exec’ing another process, the logout files are not read.  These are
       also  affected  by the RCS and GLOBAL_RCS options.  Note also that the
       RCS option affects the saving of history files, i.e. if RCS  is	unset
       when the shell exits, no history file will be saved.

       If  ZDOTDIR  is unset, HOME is used instead.  Those files listed above
       as being in /etc may be in another directory, depending on the instal-
       lation.

       As  /etc/zshenv	is run for all instances of zsh, it is important that
       it be kept as small as possible.	 In particular, it is a good idea  to
       put  code that does not need to be run for every single shell behind a
       test of the form ‘if [[ -o rcs ]]; then ...’ so that it	will  not  be
       executed when zsh is invoked with the ‘-f’ option.

       Any  of these files may be pre-compiled with the zcompile builtin com-
       mand (see zshbuiltins(1)).  If a compiled file exists (named  for  the
       original file plus the .zwc extension) and it is newer than the origi-
       nal file, the compiled file will be used instead.

FILES
       $ZDOTDIR/.zshenv
       $ZDOTDIR/.zprofile
       $ZDOTDIR/.zshrc
       $ZDOTDIR/.zlogin
       $ZDOTDIR/.zlogout
       ${TMPPREFIX}*   (default is /tmp/zsh*)
       /etc/zshenv
       /etc/zprofile
       /etc/zshrc
       /etc/zlogin
       /etc/zlogout    (installation-specific - /etc is the default)

SEE ALSO
       sh(1), csh(1), tcsh(1), rc(1), bash(1), ksh(1),	zshbuiltins(1),	 zsh-
       compwid(1), zshcompsys(1), zshcompctl(1), zshexpn(1), zshmisc(1), zsh-
       modules(1), zshoptions(1), zshparam(1), zshzle(1)

       IEEE Standard for information Technology - Portable  Operating  System
       Interface  (POSIX) - Part 2: Shell and Utilities, IEEE Inc, 1993, ISBN
       1-55937-255-9.



zsh 4.2.0			March 19, 2004			       ZSH(1)