Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZSHBUILTINS(1)		     General Commands Manual		  ZSHBUILTINS(1)

NAME
     zshbuiltins - zsh built-in commands

SHELL BUILTIN COMMANDS
     Some  shell  builtin  commands  take options as described in individual en-
     tries; these are often referred to in the list below as  `flags'  to  avoid
     confusion	with  shell options, which may also have an effect on the behav-
     iour of builtin commands.	In this introductory  section,	`option'  always
     has  the  meaning of an option to a command that should be familiar to most
     command line users.

     Typically, options are single letters preceded by a  hyphen  (-).	 Options
     that  take  an  argument  accept it either immediately following the option
     letter or after white space, for example `print -C3 {1..9}' or `print -C  3
     {1..9}' are equivalent.  Arguments to options are not the same as arguments
     to  the  command; the documentation indicates which is which.  Options that
     do not take an argument may be combined  in  a  single  word,  for  example
     `print -rca -- *' and `print -r -c -a -- *' are equivalent.

     Some  shell  builtin commands also take options that begin with `+' instead
     of `-'.  The list below makes clear which commands these are.

     Options (together with their individual arguments, if any) must appear in a
     group before any non-option arguments; once the first  non-option	argument
     has been found, option processing is terminated.

     All builtin commands other than `echo' and precommand modifiers, even those
     that  have  no  options, can be given the argument `--' to terminate option
     processing.  This indicates that the following words are  non-option  argu-
     ments,  but  is otherwise ignored.  This is useful in cases where arguments
     to the command may begin with `-'.  For historical  reasons,  most  builtin
     commands  (including `echo') also recognize a single `-' in a separate word
     for this purpose; note that this is less standard and use of `--' is recom-
     mended.

     - simple command
	    See the section `Precommand Modifiers' in zshmisc(1).

     . file [ arg ... ]
	    Read commands from file and execute them in the current shell  envi-
	    ronment.

	    If	file does not contain a slash, or if PATH_DIRS is set, the shell
	    looks in the components of $path to find  the  directory  containing
	    file.   Files  in  the current directory are not read unless `.' ap-
	    pears somewhere in $path.  If a file named `file.zwc' is  found,  is
	    newer than file, and is the compiled form (created with the zcompile
	    builtin)  of  file, then commands are read from that file instead of
	    file.

	    If any arguments arg are given, they become the  positional  parame-
	    ters;  the	old  positional parameters are restored when the file is
	    done executing.  However, if no arguments are given, the  positional
	    parameters	remain those of the calling context, and no restoring is
	    done.

	    If file was not found the return status is 127; if	file  was  found
	    but  contained a syntax error the return status is 126; else the re-
	    turn status is the exit status of the last command executed.

     : [ arg ... ]
	    This command does nothing, although normal	argument  expansions  is
	    performed  which  may have effects on shell parameters.  A zero exit
	    status is returned.

     alias [ {+|-}gmrsL ] [ name[=value] ... ]
	    For each name with a corresponding value, define an alias with  that
	    value.  A trailing space in value causes the next word to be checked
	    for  alias	expansion.   If  the -g flag is present, define a global
	    alias; global aliases are expanded even if they do not occur in com-
	    mand position:

		   % perldoc --help 2>&1 | grep 'built-in functions'
		       -f   Search Perl built-in functions
		   % alias -g HG='--help 2>&1 | grep'
		   % perldoc HG 'built-in functions'
		       -f   Search Perl built-in functions

	    If the -s flag is present, define a suffix	alias:	if  the  command
	    word on a command line is in the form `text.name', where text is any
	    non-empty  string,	it  is	replaced  by the text `value text.name'.
	    Note that name is treated as a literal string,  not  a  pattern.   A
	    trailing space in value is not special in this case.  For example,

		   alias -s ps='gv --'

	    will  cause  the  command `*.ps' to be expanded to `gv -- *.ps'.  As
	    alias expansion is carried out earlier  than  globbing,  the  `*.ps'
	    will  then	be expanded.  Suffix aliases constitute a different name
	    space from other aliases (so in the above example it is still possi-
	    ble to create an alias for the command ps)	and  the  two  sets  are
	    never listed together.

	    For  each name with no value, print the value of name, if any.  With
	    no arguments, print all currently defined aliases other than  suffix
	    aliases.   If  the	-m flag is given the arguments are taken as pat-
	    terns (they should be quoted to preserve them from being interpreted
	    as glob patterns), and  the  aliases  matching  these  patterns  are
	    printed.  When printing aliases and one of the -g, -r or -s flags is
	    present, restrict the printing to global, regular or suffix aliases,
	    respectively; a regular alias is one which is neither a global nor a
	    suffix  alias.   Using `+' instead of `-', or ending the option list
	    with a single `+', prevents the values of  the  aliases  from  being
	    printed.

	    If	the  -L flag is present, then print each alias in a manner suit-
	    able for putting in a startup script.  The exit status is nonzero if
	    a name (with no value) is given for which no alias has been defined.

	    For more on aliases, include common problems, see the section ALIAS-
	    ING in zshmisc(1).

     autoload [ {+|-}RTUXdkmrtWz ] [ -w ] [ name ... ]
	    See the section `Autoloading Functions' in zshmisc(1) for  full  de-
	    tails.   The  fpath  parameter will be searched to find the function
	    definition when the function is first referenced.

	    If name consists of an absolute path, the  function  is  defined  to
	    load  from	the file given (searching as usual for dump files in the
	    given location).  The name of the function is the basename	(non-di-
	    rectory  part) of the file.  It is normally an error if the function
	    is not found in the given location; however, if  the  option  -d  is
	    given, searching for the function defaults to $fpath.  If a function
	    is	loaded	by  absolute path, any functions loaded from it that are
	    marked for autoload without an absolute path have the load	path  of
	    the parent function temporarily prepended to $fpath.

	    If	the option -r or -R is given, the function is searched for imme-
	    diately and the location is recorded internally  for  use  when  the
	    function is executed; a relative path is expanded using the value of
	    $PWD.   This  protects  against a change to $fpath after the call to
	    autoload.  With -r, if the function is not	found,	it  is	silently
	    left  unresolved  until  execution;  with  -R,  an	error message is
	    printed and command processing aborted immediately the search fails,
	    i.e. at the autoload command rather than at function execution..

	    The flag -X may be used only inside a shell function.  It causes the
	    calling function to be marked for autoloading and  then  immediately
	    loaded and executed, with the current array of positional parameters
	    as	arguments.   This  replaces the previous definition of the func-
	    tion.  If no function definition is found, an error is  printed  and
	    the  function  remains  undefined and marked for autoloading.  If an
	    argument is given, it is used as a directory (i.e. it does	not  in-
	    clude  the	name  of  the  function)  in which the function is to be
	    found; this may be combined with the -d option to allow the function
	    search to default to $fpath if it is not in the given location.

	    The flag +X attempts to load each name as  an  autoloaded  function,
	    but  does  not execute it.	The exit status is zero (success) if the
	    function was not previously defined and  a	definition  for  it  was
	    found.   This  does not replace any existing definition of the func-
	    tion.  The exit status is nonzero (failure) if the function was  al-
	    ready  defined  or when no definition was found.  In the latter case
	    the function remains  undefined  and  marked  for  autoloading.   If
	    ksh-style  autoloading is enabled, the function created will contain
	    the contents of the file plus a call to the function itself appended
	    to it, thus giving normal ksh autoloading  behaviour  on  the  first
	    call  to  the  function.   If the -m flag is also given each name is
	    treated as a pattern and all functions already marked  for	autoload
	    that match the pattern are loaded.

	    With the -t flag, turn on execution tracing; with -T, turn on execu-
	    tion  tracing only for the current function, turning it off on entry
	    to any called functions that do not also have tracing enabled.

	    With the -U flag, alias expansion is suppressed when the function is
	    loaded.

	    With the -w flag, the names are taken as  names  of  files	compiled
	    with  the  zcompile  builtin,  and all functions defined in them are
	    marked for autoloading.

	    The flags -z and -k mark the function to be autoloaded using the zsh
	    or ksh style, as if the option KSH_AUTOLOAD were unset or were  set,
	    respectively.   The  flags override the setting of the option at the
	    time the function is loaded.

	    Note that the autoload command makes no attempt to ensure the  shell
	    options  set  during  the  loading or execution of the file have any
	    particular value.  For this, the emulate command can be used:

		   emulate zsh -c 'autoload -Uz func'

	    arranges that when func is loaded the shell is in native zsh  emula-
	    tion, and this emulation is also applied when func is run.

	    Some  of the functions of autoload are also provided by functions -u
	    or functions -U, but autoload is a more comprehensive interface.

     bg [ job ... ]
     job ... &
	    Put each specified job in the background, or the current job if none
	    is specified.

     bindkey
	    See the section `Zle Builtins' in zshzle(1).

     break [ n ]
	    Exit from an enclosing for, while, until, select or repeat loop.  If
	    an arithmetic expression n is specified, then break n levels instead
	    of just one.

     builtin name [ args ... ]
	    Executes the builtin name, with the given args.

     bye    Same as exit.

     cap    See the section `The zsh/cap Module' in zshmodules(1).

     cd [ -qsLP ] [ arg ]
     cd [ -qsLP ] old new
     cd [ -qsLP ] {+|-}n
	    Change the current directory.  In the first form, change the current
	    directory  to arg, or to the value of $HOME if arg is not specified.
	    If arg is `-', change to the previous directory.

	    Otherwise, if arg begins with a slash, attempt to change to the  di-
	    rectory given by arg.

	    If arg does not begin with a slash, the behaviour depends on whether
	    the  current  directory  `.'  occurs in the list of directories con-
	    tained in the shell parameter cdpath.  If it does not, first attempt
	    to change to the directory arg under the current directory,  and  if
	    that  fails  but cdpath is set and contains at least one element at-
	    tempt to change to the directory arg under each component of  cdpath
	    in	turn  until successful.  If `.' occurs in cdpath, then cdpath is
	    searched strictly in order so that `.' is only tried at  the  appro-
	    priate point.

	    The  order	of  testing cdpath is modified if the option POSIX_CD is
	    set, as described in the documentation for the option.

	    If no directory is found, the option CDABLE_VARS is set, and a para-
	    meter named arg exists whose value begins with a  slash,  treat  its
	    value as the directory.  In that case, the parameter is added to the
	    named directory hash table.

	    The  second form of cd substitutes the string new for the string old
	    in the name of the current directory, and tries to	change	to  this
	    new directory.

	    The third form of cd extracts an entry from the directory stack, and
	    changes  to that directory.  An argument of the form `+n' identifies
	    a stack entry by counting from the left of the  list  shown  by  the
	    dirs  command,  starting  with  zero.   An argument of the form `-n'
	    counts from the right.  If the PUSHD_MINUS option is set, the  mean-
	    ings  of  `+'  and `-' in this context are swapped.  If the POSIX_CD
	    option is set, this form of cd is not recognised and will be  inter-
	    preted as the first form.

	    If	the  -q (quiet) option is specified, the hook function chpwd and
	    the functions in the array chpwd_functions are not called.	This  is
	    useful for calls to cd that do not change the environment seen by an
	    interactive user.

	    If	the -s option is specified, cd refuses to change the current di-
	    rectory if the given pathname contains symlinks.  If the  -P  option
	    is	given  or  the CHASE_LINKS option is set, symbolic links are re-
	    solved to their true values.  If the -L  option  is  given	symbolic
	    links are retained in the directory (and not resolved) regardless of
	    the state of the CHASE_LINKS option.

     chdir  Same as cd.

     clone  See the section `The zsh/clone Module' in zshmodules(1).

     command [ -pvV ] simple command
	    The  simple command argument is taken as an external command instead
	    of a function or builtin and is executed. If the POSIX_BUILTINS  op-
	    tion  is  set,  builtins  will  also be executed but certain special
	    properties of them are suppressed. The -p flag causes a default path
	    to be searched instead of that in $path. With the -v  flag,  command
	    is similar to whence and with -V, it is equivalent to whence -v.

	    See also the section `Precommand Modifiers' in zshmisc(1).

     comparguments
	    See the section `The zsh/computil Module' in zshmodules(1).

     compcall
	    See the section `The zsh/compctl Module' in zshmodules(1).

     compctl
	    See the section `The zsh/compctl Module' in zshmodules(1).

     compdescribe
	    See the section `The zsh/computil Module' in zshmodules(1).

     compfiles
	    See the section `The zsh/computil Module' in zshmodules(1).

     compgroups
	    See the section `The zsh/computil Module' in zshmodules(1).

     compquote
	    See the section `The zsh/computil Module' in zshmodules(1).

     comptags
	    See the section `The zsh/computil Module' in zshmodules(1).

     comptry
	    See the section `The zsh/computil Module' in zshmodules(1).

     compvalues
	    See the section `The zsh/computil Module' in zshmodules(1).

     continue [ n ]
	    Resume the next iteration of the enclosing for, while, until, select
	    or	repeat	loop.  If an arithmetic expression n is specified, break
	    out of n-1 loops and resume at the nth enclosing loop.

     declare
	    Same as typeset.

     dirs [ -c ] [ arg ... ]
     dirs [ -lpv ]
	    With no arguments, print the contents of the directory  stack.   Di-
	    rectories  are  added  to this stack with the pushd command, and re-
	    moved with the cd or popd commands.   If  arguments  are  specified,
	    load  them	onto  the  directory  stack, replacing anything that was
	    there, and push the current directory onto the stack.

	    -c	   clear the directory stack.

	    -l	   print directory names in full instead of using of using ~ ex-
		   pressions (see Dynamic and Static named directories	in  zsh-
		   expn(1)).

	    -p	   print directory entries one per line.

	    -v	   number the directories in the stack when printing.

     disable [ -afmprs ] name ...
	    Temporarily  disable the named hash table elements or patterns.  The
	    default is to disable builtin commands.  This allows you to  use  an
	    external  command  with  the same name as a builtin command.  The -a
	    option causes disable to act on regular or global aliases.	 The  -s
	    option  causes  disable  to  act  on  suffix aliases.  The -f option
	    causes disable to act on shell functions.	The  -r  options  causes
	    disable  to  act  on reserved words.  Without arguments all disabled
	    hash table elements from the corresponding hash table  are	printed.
	    With  the  -m flag the arguments are taken as patterns (which should
	    be quoted to prevent them from undergoing filename	expansion),  and
	    all  hash  table elements from the corresponding hash table matching
	    these patterns are disabled.  Disabled objects can be  enabled  with
	    the enable command.

	    With  the  option -p, name ... refer to elements of the shell's pat-
	    tern syntax as described in the section `Filename Generation'.  Cer-
	    tain elements can be disabled separately, as given below.

	    Note that patterns not allowed by the current settings for	the  op-
	    tions EXTENDED_GLOB, KSH_GLOB and SH_GLOB are never enabled, regard-
	    less  of the setting here.	For example, if EXTENDED_GLOB is not ac-
	    tive, the pattern ^ is ineffective even if `disable -p "^"' has  not
	    been  issued.  The list below indicates any option settings that re-
	    strict the use of the pattern.  It	should	be  noted  that  setting
	    SH_GLOB has a wider effect than merely disabling patterns as certain
	    expressions,  in  particular those involving parentheses, are parsed
	    differently.

	    The following patterns may be disabled; all the strings need quoting
	    on the command line to prevent them from being  interpreted  immedi-
	    ately  as patterns and the patterns are shown below in single quotes
	    as a reminder.

	    '?'    The pattern character ? wherever it	occurs,  including  when
		   preceding a parenthesis with KSH_GLOB.

	    '*'    The	pattern character * wherever it occurs, including recur-
		   sive globbing and when preceding a parenthesis with KSH_GLOB.

	    '['    Character classes.

	    '<' (NO_SH_GLOB)
		   Numeric ranges.

	    '|' (NO_SH_GLOB)
		   Alternation in grouped patterns, case statements, or KSH_GLOB
		   parenthesised expressions.

	    '(' (NO_SH_GLOB)
		   Grouping using single parentheses.  Disabling this  does  not
		   disable  the  use  of parentheses for KSH_GLOB where they are
		   introduced by a special character, nor  for	glob  qualifiers
		   (use  `setopt  NO_BARE_GLOB_QUAL'  to disable glob qualifiers
		   that use parentheses only).

	    '~' (EXTENDED_GLOB)
		   Exclusion in the form A~B.

	    '^' (EXTENDED_GLOB)
		   Exclusion in the form A^B.

	    '#' (EXTENDED_GLOB)
		   The pattern character # wherever it occurs, both for  repeti-
		   tion of a previous pattern and for indicating globbing flags.

	    '?(' (KSH_GLOB)
		   The	grouping form ?(...).  Note this is also disabled if '?'
		   is disabled.

	    '*(' (KSH_GLOB)
		   The grouping form *(...).  Note this is also disabled if  '*'
		   is disabled.

	    '+(' (KSH_GLOB)
		   The grouping form +(...).

	    '!(' (KSH_GLOB)
		   The grouping form !(...).

	    '@(' (KSH_GLOB)
		   The grouping form @(...).

     disown [ job ... ]
     job ... &|
     job ... &!
	    Remove  the  specified  jobs  from	the job table; the shell will no
	    longer report their status, and will not complain if you try to exit
	    an interactive shell with them running or stopped.	 If  no  job  is
	    specified, disown the current job.

	    If	the  jobs  are currently stopped and the AUTO_CONTINUE option is
	    not set, a warning is printed containing information  about  how  to
	    make them running after they have been disowned.  If one of the lat-
	    ter  two forms is used, the jobs will automatically be made running,
	    independent of the setting of the AUTO_CONTINUE option.

     echo [ -neE ] [ arg ... ]
	    Write each arg on the standard output, with a space separating  each
	    one.   If  the  -n	flag is not present, print a newline at the end.
	    echo recognizes the following escape sequences:

	    \a	   bell character
	    \b	   backspace
	    \c	   suppress subsequent characters and final newline
	    \e	   escape
	    \f	   form feed
	    \n	   linefeed (newline)
	    \r	   carriage return
	    \t	   horizontal tab
	    \v	   vertical tab
	    \\	   backslash
	    \0NNN  character code in octal
	    \xNN   character code in hexadecimal
	    \uNNNN
		   unicode character code in hexadecimal
	    \UNNNNNNNN
		   unicode character code in hexadecimal

	    The -E flag, or the BSD_ECHO option, can be used  to  disable  these
	    escape sequences.  In the latter case, -e flag can be used to enable
	    them.

	    Note  that for standards compliance a double dash does not terminate
	    option processing; instead, it is printed directly.  However, a sin-
	    gle dash does terminate option processing, so the first dash, possi-
	    bly following options, is not printed, but everything  following  it
	    is	printed  as an argument.  The single dash behaviour is different
	    from other shells.	For a more portable way of  printing  text,  see
	    printf, and for a more controllable way of printing text within zsh,
	    see print.

     echotc
	    See the section `The zsh/termcap Module' in zshmodules(1).

     echoti
	    See the section `The zsh/terminfo Module' in zshmodules(1).

     emulate [ -lLR ] [ {zsh|sh|ksh|csh} [ flags ... ] ]
	    Without any argument print current emulation mode.

	    With  single  argument  set  up zsh options to emulate the specified
	    shell as much as possible.	csh will never be  fully  emulated.   If
	    the argument is not one of the shells listed above, zsh will be used
	    as	a  default;  more precisely, the tests performed on the argument
	    are the same as those used to determine  the  emulation  at  startup
	    based  on  the shell name, see the section COMPATIBILITY in zsh(1) .
	    In addition to setting shell options, the command also restores  the
	    pristine  state  of pattern enables, as if all patterns had been en-
	    abled using enable -p.

	    If the emulate command occurs inside a function that has been marked
	    for execution tracing with functions -t then the xtrace option  will
	    be	turned	on  regardless of emulation mode or other options.  Note
	    that code executed inside the function by the  .,  source,	or  eval
	    commands is not considered to be running directly from the function,
	    hence does not provoke this behaviour.

	    If	the  -R switch is given, all settable options are reset to their
	    default value corresponding to the specified emulation mode,  except
	    for  certain  options describing the interactive environment; other-
	    wise, only those options likely to	cause  portability  problems  in
	    scripts  and  functions are altered.  If the -L switch is given, the
	    options LOCAL_OPTIONS, LOCAL_PATTERNS and LOCAL_TRAPS will be set as
	    well, causing the effects of the emulate  command  and  any  setopt,
	    disable  -p or enable -p, and trap commands to be local to the imme-
	    diately surrounding shell function, if any; normally  these  options
	    are  turned  off in all emulation modes except ksh. The -L switch is
	    mutually exclusive with the use of -c in flags.

	    If there is a single argument and the -l switch is	given,	the  op-
	    tions that would be set or unset (the latter indicated with the pre-
	    fix `no') are listed.  -l can be combined with -L or -R and the list
	    will be modified in the appropriate way.  Note the list does not de-
	    pend on the current setting of options, i.e. it includes all options
	    that  may  in  principle  change, not just those that would actually
	    change.

	    The flags may be any of the invocation-time flags described  in  the
	    section INVOCATION in zsh(1), except that `-o EMACS' and `-o VI' may
	    not  be  used.  Flags such as `+r'/`+o RESTRICTED' may be prohibited
	    in some circumstances.

	    If -c arg appears in flags, arg is evaluated while the requested em-
	    ulation is temporarily in effect.  In this case the  emulation  mode
	    and all options are restored to their previous values before emulate
	    returns.   The  -R	switch may precede the name of the shell to emu-
	    late; note this has a meaning distinct from including -R in flags.

	    Use of -c enables `sticky'	emulation  mode  for  functions  defined
	    within  the  evaluated expression:	the emulation mode is associated
	    thereafter with the function so that whenever the function	is  exe-
	    cuted  the	emulation (respecting the -R switch, if present) and all
	    options are set (and pattern disables cleared) before entry  to  the
	    function,  and the state is restored after exit.  If the function is
	    called when the sticky emulation is already in effect, either within
	    an `emulate shell -c' expression or within another function with the
	    same sticky emulation, entry and exit from the function do not cause
	    options to be altered (except due to standard processing such as the
	    LOCAL_OPTIONS option).  This also applies to  functions  marked  for
	    autoload within the sticky emulation; the appropriate set of options
	    will  be applied at the point the function is loaded as well as when
	    it is run.

	    For example:

		   emulate sh -c 'fni() { setopt cshnullglob; }
		   fno() { fni; }'
		   fno

	    The two functions fni and fno are defined with sticky sh  emulation.
	    fno  is then executed, causing options associated with emulations to
	    be set to their values in sh.  fno then calls fni;	because  fni  is
	    also marked for sticky sh emulation, no option changes take place on
	    entry  to or exit from it.	Hence the option cshnullglob, turned off
	    by sh emulation, will be turned on within fni and remain  on  return
	    to	fno.   On exit from fno, the emulation mode and all options will
	    be restored to the state they were in before entry to the  temporary
	    emulation.

	    The  documentation	above  is  typically sufficient for the intended
	    purpose of executing code designed for other shells  in  a	suitable
	    environment.  More detailed rules follow.
	    1.	   The	sticky	emulation environment provided by `emulate shell
		   -c' is identical to that provided  by  entry  to  a	function
		   marked for sticky emulation as a consequence of being defined
		   in  such an environment.  Hence, for example, the sticky emu-
		   lation is inherited by subfunctions defined within  functions
		   with sticky emulation.
	    2.	   No  change  of  options  takes place on entry to or exit from
		   functions that are not marked  for  sticky  emulation,  other
		   than  those	that  would  normally  take place, even if those
		   functions are called within sticky emulation.
	    3.	   No special handling is provided for functions marked for  au-
		   toload  nor	for functions present in wordcode created by the
		   zcompile command.
	    4.	   The presence or absence of the -R switch  to  emulate  corre-
		   sponds  to  different  sticky emulation modes, so for example
		   `emulate sh -c', `emulate -R sh -c' and `emulate csh -c'  are
		   treated as three distinct sticky emulations.
	    5.	   Difference in shell options supplied in addition to the basic
		   emulation  also  mean the sticky emulations are different, so
		   for example `emulate zsh -c' and `emulate zsh -o  cbases  -c'
		   are treated as distinct sticky emulations.

     enable [ -afmprs ] name ...
	    Enable  the  named	hash table elements, presumably disabled earlier
	    with disable.  The default is to enable builtin  commands.	 The  -a
	    option  causes  enable  to act on regular or global aliases.  The -s
	    option causes enable to act on suffix aliases.  The -f option causes
	    enable to act on shell functions.  The -r option  causes  enable  to
	    act on reserved words.  Without arguments all enabled hash table el-
	    ements  from  the corresponding hash table are printed.  With the -m
	    flag the arguments are taken as patterns (should be quoted) and  all
	    hash table elements from the corresponding hash table matching these
	    patterns are enabled.  Enabled objects can be disabled with the dis-
	    able builtin command.

	    enable -p reenables patterns disabled with disable -p.  Note that it
	    does  not  override  globbing  options; for example, `enable -p "~"'
	    does not cause the pattern character ~ to be active unless	the  EX-
	    TENDED_GLOB option is also set.  To enable all possible patterns (so
	    that they may be individually disabled with disable -p), use `setopt
	    EXTENDED_GLOB KSH_GLOB NO_SH_GLOB'.

     eval [ arg ... ]
	    Read  the  arguments as input to the shell and execute the resulting
	    command(s) in the current shell process.  The return status  is  the
	    same  as if the commands had been executed directly by the shell; if
	    there are no args or they contain no commands  (i.e.  are  an  empty
	    string or whitespace) the return status is zero.

     exec [ -cl ] [ -a argv0 ] [ command [ arg ... ] ]
	    Replace the current shell with command rather than forking.  If com-
	    mand  is a shell builtin command or a shell function, the shell exe-
	    cutes it, and exits when the command is complete.

	    With -c clear the environment; with -l  prepend  -	to  the  argv[0]
	    string  of the command executed (to simulate a login shell); with -a
	    argv0 set the argv[0] string of the command executed.  See the  sec-
	    tion `Precommand Modifiers' in zshmisc(1).

	    If the option POSIX_BUILTINS is set, command is never interpreted as
	    a  shell builtin command or shell function.  This means further pre-
	    command modifiers such as builtin and noglob  are  also  not  inter-
	    preted within the shell.  Hence command is always found by searching
	    the command path.

	    If	command  is omitted but any redirections are specified, then the
	    redirections will take effect in the current shell.

     exit [ n ]
	    Exit the shell with the exit status specified by an  arithmetic  ex-
	    pression  n; if none is specified, use the exit status from the last
	    command executed.  An EOF condition will also  cause  the  shell  to
	    exit, unless the IGNORE_EOF option is set.

	    See notes at the end of the section JOBS in zshmisc(1) for some pos-
	    sibly unexpected interactions of the exit command with jobs.

     export [ name[=value] ... ]
	    The  specified names are marked for automatic export to the environ-
	    ment of subsequently executed commands.  Equivalent to typeset  -gx.
	    If	a  parameter  specified does not already exist, it is created in
	    the global scope.

     false [ arg ... ]
	    Do nothing and return an exit status of 1.

     fc [ -e ename ] [ -s ] [ -LI ] [ -m match ] [ old=new ... ] [ first [ last
     ] ]
     fc -l [ -LI ] [ -nrdfEiD ] [ -t timefmt ] [ -m match ]
	   [ old=new ... ] [ first [ last ] ]
     fc -p [ -a ] [ filename [ histsize [ savehistsize ] ] ]
     fc -P
     fc -ARWI [ filename ]
	    The fc command controls the  interactive  history  mechanism.   Note
	    that reading and writing of history options is only performed if the
	    shell  is  interactive.  Usually this is detected automatically, but
	    it can be forced by setting the interactive option when starting the
	    shell.

	    The first two forms of this command select a range	of  events  from
	    first  to  last from the history list.  The arguments first and last
	    may be specified as a number or as a string.  A negative  number  is
	    used  as  an  offset  to the current history event number.	A string
	    specifies the most recent event beginning  with  the  given  string.
	    All substitutions old=new, if any, are then performed on the text of
	    the events.

	    The  range	of events selected by numbers can be narrowed further by
	    the following flags.
	    -I	   restricts to only internal events (not from $HISTFILE)
	    -L	   restricts to only local events (not from  other  shells,  see
		   SHARE_HISTORY in zshoptions(1) -- note that $HISTFILE is con-
		   sidered local when read at startup)
	    -m	   takes  the  first  argument	as  a  pattern	(which should be
		   quoted) and only the history events matching this pattern are
		   considered

	    If first is not specified, it will be set to  -1  (the  most  recent
	    event),  or  to  -16 if the -l flag is given.  If last is not speci-
	    fied, it will be set to first, or to -1 if the  -l	flag  is  given.
	    However,  if the current event has added entries to the history with
	    `print -s' or `fc -R', then the default last for -l includes all new
	    history entries since the current event began.

	    When the -l flag is given, the resulting events are listed on  stan-
	    dard  output.  Otherwise the editor program specified by -e ename is
	    invoked on a file containing these history events.	 If  -e  is  not
	    given, the value of the parameter FCEDIT is used; if that is not set
	    the  value	of  the  parameter  EDITOR is used; if that is not set a
	    builtin default, usually `vi' is used.  If ename is `-',  no  editor
	    is	invoked.   When  editing is complete, the edited command is exe-
	    cuted.

	    The flag `-s' is equivalent to `-e -'.  The flag -r reverses the or-
	    der of the events and the flag  -n	suppresses  event  numbers  when
	    listing.

	    Also when listing,
	    -d	   prints timestamps for each event
	    -f	   prints  full time-date stamps in the US `MM/DD/YY hh:mm' for-
		   mat
	    -E	   prints full time-date  stamps  in  the  European  `dd.mm.yyyy
		   hh:mm' format
	    -i	   prints  full  time-date  stamps in ISO8601 `yyyy-mm-dd hh:mm'
		   format
	    -t fmt
		   prints time and date stamps in the given format; fmt is  for-
		   matted with the strftime function with the zsh extensions de-
		   scribed  for  the %D{string} prompt format in the section EX-
		   PANSION OF PROMPT SEQUENCES	in  zshmisc(1).   The  resulting
		   formatted  string must be no more than 256 characters or will
		   not be printed
	    -D	   prints elapsed times; may be combined with one of the options
		   above

	    `fc -p' pushes the current history list onto a stack and switches to
	    a new history list.  If the -a option is also specified,  this  his-
	    tory  list	will  be  automatically popped when the current function
	    scope is exited, which is a much better  solution  than  creating  a
	    trap  function to call `fc -P' manually.  If no arguments are speci-
	    fied, the history list is left empty, $HISTFILE is unset, and $HIST-
	    SIZE & $SAVEHIST are set to their default values.  If  one	argument
	    is	given,	$HISTFILE is set to that filename, $HISTSIZE & $SAVEHIST
	    are left unchanged, and the history file is read in (if  it  exists)
	    to	initialize  the  new  list.   If a second argument is specified,
	    $HISTSIZE & $SAVEHIST are instead set to the  single  specified  nu-
	    meric  value.   Finally, if a third argument is specified, $SAVEHIST
	    is set to a separate value from $HISTSIZE.	You are free  to  change
	    these environment values for the new history list however you desire
	    in order to manipulate the new history list.

	    `fc  -P'  pops  the  history list back to an older list saved by `fc
	    -p'.  The current list is saved to its $HISTFILE before  it  is  de-
	    stroyed  (assuming	that  $HISTFILE  and $SAVEHIST are set appropri-
	    ately, of course).	The values of $HISTFILE, $HISTSIZE,  and  $SAVE-
	    HIST  are  restored  to the values they had when `fc -p' was called.
	    Note that this restoration can conflict with making these  variables
	    "local",  so  your best bet is to avoid local declarations for these
	    variables in functions that use `fc  -p'.	The  one  other  guaran-
	    teed-safe  combination  is	declaring these variables to be local at
	    the top of your function and using the automatic  option  (-a)  with
	    `fc  -p'.	Finally,  note	that  it is legal to manually pop a push
	    marked for automatic popping if you need to do so before  the  func-
	    tion exits.

	    `fc  -R'  reads  the history from the given file, `fc -W' writes the
	    history out to the given file, and `fc -A' appends the  history  out
	    to	the  given  file.  If no filename is specified, the $HISTFILE is
	    assumed.  If the -I option is added to -R, only  those  events  that
	    are  not  already  contained  within  the  internal history list are
	    added.  If the -I option is added to -A or	-W,  only  those  events
	    that are new since last incremental append/write to the history file
	    are  appended/written.   In  any case, the created file will have no
	    more than $SAVEHIST entries.

     fg [ job ... ]
     job ...
	    Bring each specified job in turn to the foreground.  If  no  job  is
	    specified, resume the current job.

     float [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ n ] ] [ name[=value] ... ]
	    Equivalent to typeset -E, except that options irrelevant to floating
	    point numbers are not permitted.

     functions [ {+|-}UkmtTuWz ] [ -x num ] [ name ... ]
     functions -c oldfn newfn
     functions -M [-s] mathfn [ min [ max [ shellfn ] ] ]
     functions -M [ -m pattern ... ]
     functions +M [ -m ] mathfn ...
	    Equivalent	to  typeset -f, with the exception of the -c, -x, -M and
	    -W options.  For functions -u and functions -U, see autoload,  which
	    provides additional options.  For functions -t and functions -T, see
	    typeset -f.

	    The  -x  option  indicates	that any functions output will have each
	    leading tab for indentation, added by the shell  to  show  syntactic
	    structure, expanded to the given number num of spaces.  num can also
	    be 0 to suppress all indentation.

	    The  -W  option  turns  on	the option WARN_NESTED_VAR for the named
	    function or functions only.  The option is turned off at  the  start
	    of	nested	functions  (apart  from anonoymous functions) unless the
	    called function also has the -W attribute.

	    The -c option causes oldfn to be copied to newfn.  The copy is effi-
	    ciently handled internally by  reference  counting.   If  oldfn  was
	    marked  for  autoload  it is first loaded and if this fails the copy
	    fails.  Either function may subsequently be  redefined  without  af-
	    fecting  the  other.  A typical idiom is that oldfn is the name of a
	    library shell function  which  is  then  redefined	to  call  newfn,
	    thereby installing a modified version of the function.

	    The -M and +M flags

	    Use  of  the  -M  option may not be combined with any of the options
	    handled by typeset -f.

	    functions -M mathfn defines mathfn as the  name  of  a  mathematical
	    function  recognised  in  all forms of arithmetical expressions; see
	    the section  `Arithmetic  Evaluation'  in  zshmisc(1).   By  default
	    mathfn  may take any number of comma-separated arguments.  If min is
	    given, it must have exactly min args; if min and max are both given,
	    it must have at least min and at most max args.  max may  be  -1  to
	    indicate that there is no upper limit.

	    By	default  the  function is implemented by a shell function of the
	    same name; if shellfn is specified it gives the name of  the  corre-
	    sponding shell function while mathfn remains the name used in arith-
	    metical  expressions.  The name of the function in $0 is mathfn (not
	    shellfn as would usually be the case),  provided  the  option  FUNC-
	    TION_ARGZERO  is  in effect.  The positional parameters in the shell
	    function correspond to the arguments of  the  mathematical	function
	    call.

	    The  result of the last arithmetical expression evaluated inside the
	    shell function gives the result of the mathematical function.   This
	    is not limited to arithmetic substitutions of the form $((...)), but
	    also  includes  arithmetical expressions evaluated in any other way,
	    including by the let builtin, by ((...)) statements, and even by the
	    return builtin and by array subscripts.   Therefore,  care	must  be
	    taken  not	to  use  syntactical  constructs that perform arithmetic
	    evaluation after evaluating what is to be the result  of  the  func-
	    tion.  For example:

		   # WRONG
		   zmath_cube() {
		     (( $1 * $1 * $1 ))
		     return 0
		   }
		   functions -M cube 1 1 zmath_cube
		   print $(( cube(3) ))

	    This will print `0' because of the return.

	    Commenting	the  return  out  would lead to a different problem: the
	    ((...)) statement would become the last statement in  the  function,
	    so	the  return status ($?) of the function would be non-zero (indi-
	    cating failure) whenever the arithmetic result of the function would
	    happen to be zero (numerically):

		   # WRONG
		   zmath_cube() {
		     (( $1 * $1 * $1 ))
		   }
		   functions -M cube 1 1 zmath_cube
		   print $(( cube(0) ))

	    Instead, the true builtin can be used:

		   # RIGHT
		   zmath_cube() {
		     (( $1 * $1 * $1 ))
		     true
		   }
		   functions -M cube 1 1 zmath_cube
		   print $(( cube(3) ))

	    If the additional option -s is given to functions -M,  the	argument
	    to the function is a single string: anything between the opening and
	    matching  closing  parenthesis is passed to the function as a single
	    argument, even if it includes commas or white  space.   The  minimum
	    and  maximum  argument  specifiers must therefore be 1 if given.  An
	    empty argument list is passed as a zero-length  string.   Thus,  the
	    following  string  function  takes	a single argument, including the
	    commas, and prints 11:

		   stringfn() { (( $#1 )); true }
		   functions -Ms stringfn
		   print $(( stringfn(foo,bar,rod) ))

	    functions -M with no arguments lists all such user-defined functions
	    in the same form as a definition.  With the additional option -m and
	    a list of arguments, all functions whose mathfn matches one  of  the
	    pattern arguments are listed.

	    function +M removes the list of mathematical functions; with the ad-
	    ditional  option  -m  the  arguments are treated as patterns and all
	    functions whose mathfn matches the pattern are removed.   Note  that
	    the  shell	function  implementing the behaviour is not removed (re-
	    gardless of whether its name coincides with mathfn).

     getcap
	    See the section `The zsh/cap Module' in zshmodules(1).

     getln [ -AclneE ] name ...
	    Read the top value from the buffer stack and put it in the shell pa-
	    rameter name.  Equivalent to read -zr.

     getopts optstring name [ arg ... ]
	    Checks the args for legal options.	If the args are omitted, use the
	    positional parameters.  A valid option argument begins with a `+' or
	    a `-'.  An argument not beginning with a `+' or a `-', or the  argu-
	    ment  `--', ends the options.  Note that a single `-' is not consid-
	    ered a valid option argument.  optstring contains the  letters  that
	    getopts  recognizes.   If a letter is followed by a `:', that option
	    requires an argument.  The options can be separated from  the  argu-
	    ment by blanks.

	    Each  time	it is invoked, getopts places the option letter it finds
	    in the shell parameter name, prepended with a `+'  when  arg  begins
	    with a `+'.  The index of the next arg is stored in OPTIND.  The op-
	    tion argument, if any, is stored in OPTARG.

	    The first option to be examined may be changed by explicitly assign-
	    ing  to  OPTIND.   OPTIND has an initial value of 1, and is normally
	    set to 1 upon entry to a shell  function  and  restored  upon  exit.
	    (The  POSIX_BUILTINS  option disables this, and also changes the way
	    the value is calculated to match other shells.)  OPTARG is not reset
	    and retains its value from the most recent call to getopts.  If  ei-
	    ther  of OPTIND or OPTARG is explicitly unset, it remains unset, and
	    the index or option argument is not stored.  The  option  itself  is
	    still stored in name in this case.

	    A leading `:' in optstring causes getopts to store the letter of any
	    invalid  option in OPTARG, and to set name to `?' for an unknown op-
	    tion and to `:' when a required  argument  is  missing.   Otherwise,
	    getopts  sets name to `?' and prints an error message when an option
	    is invalid.  The exit status is nonzero when there are no  more  op-
	    tions.

     hash [ -Ldfmrv ] [ name[=value] ] ...
	    hash can be used to directly modify the contents of the command hash
	    table,  and the named directory hash table.  Normally one would mod-
	    ify these tables by modifying one's PATH (for the command  hash  ta-
	    ble)  or by creating appropriate shell parameters (for the named di-
	    rectory hash table).  The choice of hash table to work on is  deter-
	    mined by the -d option; without the option the command hash table is
	    used, and with the option the named directory hash table is used.

	    A  command	name  starting with a / or with a relative path starting
	    with ./ or ../ is never executed by lookup in the command  hash  ta-
	    ble, and these can only be added to the table by explicit use of the
	    hash  command.   Such a command is always found by direct look up in
	    the file system.

	    Given no arguments, and neither the -r or -f options,  the	selected
	    hash table will be listed in full.

	    The -r option causes the selected hash table to be emptied.  It will
	    be subsequently rebuilt in the normal fashion.  The -f option causes
	    the  selected  hash  table to be fully rebuilt immediately.  For the
	    command hash table this hashes all (and only) the absolute	directo-
	    ries  in  the PATH, and for the named directory hash table this adds
	    all users' home directories.  These two options cannot be used  with
	    any arguments.  Both options remove any explicitly-added elements.

	    The  -m  option  causes the arguments to be taken as patterns (which
	    should be quoted) and the elements of the hash table matching  those
	    patterns are printed.  This is the only way to display a limited se-
	    lection of hash table elements.

	    For each name with a corresponding value, put `name' in the selected
	    hash  table,  associating it with the pathname `value'.  In the com-
	    mand hash table, this means that whenever `name' is used as  a  com-
	    mand  argument,  the  shell  will  try  to execute the file given by
	    `value'.  In the named directory hash table, this means that `value'
	    may be referred to as `~name'.

	    For each name with no corresponding value, attempt to  add	name  to
	    the hash table, checking what the appropriate value is in the normal
	    manner for that hash table.  If an appropriate value can't be found,
	    then the hash table will be unchanged.

	    The  -v  option  causes  hash table entries to be listed as they are
	    added by explicit specification.  If has no effect if used with -f.

	    If the -L flag is present, then each hash table entry is printed  in
	    the form of a call to hash.

     history
	    Same as fc -l.

     integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ n ] ] [ name[=value] ... ]
	    Equivalent to typeset -i, except that options irrelevant to integers
	    are not permitted.

     jobs [ -dlprs ] [ job ... ]
     jobs -Z string
	    Lists  information about each given job, or all jobs if job is omit-
	    ted.  The -l flag lists process IDs, and the -p flag  lists  process
	    groups.   If  the  -r  flag  is  specified only running jobs will be
	    listed and if the -s flag is given only stopped jobs are shown.   If
	    the  -d  flag is given, the directory from which the job was started
	    (which may not be the current directory of the  job)  will	also  be
	    shown.

	    The  -Z  option  replaces the shell's argument and environment space
	    with the given string, truncated if necessary  to  fit.   This  will
	    normally  be  visible in ps (ps(1)) listings.  This feature is typi-
	    cally used by daemons, to indicate their state.

	    Full job control is only  available  in  the  top-level  interactive
	    shell,  not  in  commands  run in the left hand side of pipelines or
	    within the (...) construct.  However, a snapshot of the job state at
	    that point is taken, so  it  is  still  possible  to  use  the  jobs
	    builtin, or any parameter providing job information.  This gives in-
	    formation about the state of jobs at the point the subshell was cre-
	    ated.  If background processes are created within the subshell, then
	    instead information about those processes is provided.

	    For example,

		   sleep 10 &	 # Job in background
		   (		 # Shell forks
		   jobs 	 # Shows information about "sleep 10 &"
		   sleep 5 &	 # Process in background (no job control)
		   jobs 	 # Shows information about "sleep 5 &"
		   )

     kill [ -s signal_name | -n signal_number | -sig ] [ -q value ] job ...
     kill -l [ sig ... ]
     kill -L
	    Sends  either  SIGTERM  or the specified signal to the given jobs or
	    processes.	Signals are given by number or by names, with or without
	    the `SIG' prefix.  If the signal being sent is not `KILL' or `CONT',
	    then the job will be sent a `CONT' signal if it is stopped.  The ar-
	    gument job can be the process ID of a job not in the job  list.   In
	    the  second  form, kill -l, if sig is not specified the signal names
	    are listed.  Otherwise, for each sig that is a name, the correspond-
	    ing signal number is listed.  For each sig that is a  signal  number
	    or a number representing the exit status of a process which was ter-
	    minated  or  stopped  by a signal the name of the signal is printed.
	    The final form with -L lists each signal name with its corresponding
	    number.

	    On some systems, alternative signal names are allowed for a few sig-
	    nals.  Typical examples are SIGCHLD and SIGCLD or SIGPOLL and SIGIO,
	    assuming they correspond to the same signal number.   kill	-l  will
	    only  list	the preferred form, however kill -l alt will show if the
	    alternative form corresponds to a signal number.  For example, under
	    Linux kill -l IO and kill -l POLL both output 29, hence kill -IO and
	    kill -POLL have the same effect.

	    Many systems will allow process IDs to be negative to kill a process
	    group or zero to kill the current process group.

	    The -q option allows an integer value to be sent with the signal  on
	    systems that support sigqueue().

     let arg ...
	    Evaluate  each  arg  as  an  arithmetic expression.  See the section
	    `Arithmetic Evaluation' in zshmisc(1) for a  description  of  arith-
	    metic  expressions.   The  exit status is 0 if the value of the last
	    expression is nonzero, 1 if it is zero, and 2 if an error occurred.

     limit [ -hs ] [ resource [ limit ] ] ...
	    Set or display resource limits.  Unless the -s flag  is  given,  the
	    limit  applies only the children of the shell.  If -s is given with-
	    out other arguments, the resource limits of the current shell is set
	    to the previously set resource limits of the children.

	    If limit is not specified, print the current  limit  placed  on  re-
	    source,  otherwise	set the limit to the specified value.  If the -h
	    flag is given, use hard limits instead of soft limits.   If  no  re-
	    source is given, print all limits.

	    When  looping  over multiple resources, the shell will abort immedi-
	    ately if it detects a badly formed argument.  However, if  it  fails
	    to	set a limit for some other reason it will continue trying to set
	    the remaining limits.

	    resource can be one of:

	    addressspace
		   Maximum amount of address space used.
	    aiomemorylocked
		   Maximum amount of memory locked in RAM for AIO operations.
	    aiooperations
		   Maximum number of AIO operations.
	    cachedthreads
		   Maximum number of cached threads.
	    coredumpsize
		   Maximum size of a core dump.
	    cputime
		   Maximum CPU seconds per process.
	    datasize
		   Maximum data size (including stack) for each process.
	    descriptors
		   Maximum value for a file descriptor.
	    filesize
		   Largest single file allowed.
	    kqueues
		   Maximum number of kqueues allocated.
	    maxproc
		   Maximum number of processes.
	    maxpthreads
		   Maximum number of threads per process.
	    memorylocked
		   Maximum amount of memory locked in RAM.
	    memoryuse
		   Maximum resident set size.
	    msgqueue
		   Maximum number of bytes in POSIX message queues.
	    posixlocks
		   Maximum number of POSIX locks per user.
	    pseudoterminals
		   Maximum number of pseudo-terminals.
	    resident
		   Maximum resident set size.
	    sigpending
		   Maximum number of pending signals.
	    sockbufsize
		   Maximum size of all socket buffers.
	    stacksize
		   Maximum stack size for each process.
	    swapsize
		   Maximum amount of swap used.
	    vmemorysize
		   Maximum amount of virtual memory.

	    Which of these resource limits are available depends on the  system.
	    resource  can be abbreviated to any unambiguous prefix.  It can also
	    be an integer, which corresponds to the integer defined for the  re-
	    source by the operating system.

	    If argument corresponds to a number which is out of the range of the
	    resources  configured  into the shell, the shell will try to read or
	    write the limit anyway, and will report an error if this fails.   As
	    the  shell	does  not store such resources internally, an attempt to
	    set the limit will fail unless the -s option is present.

	    limit is a number, with an optional scaling factor, as follows:

	    nh	   hours
	    nk	   kilobytes (default)
	    nm	   megabytes or minutes
	    ng	   gigabytes
	    [mm:]ss
		   minutes and seconds

	    The limit command is not made available by default	when  the  shell
	    starts  in a mode emulating another shell.	It can be made available
	    with the command `zmodload -F zsh/rlimits b:limit'.

     local [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ n ] ] [ name[=value] ... ]
	    Same as typeset, except that the options -g, and -f are not  permit-
	    ted.   In this case the -x option does not force the use of -g, i.e.
	    exported variables will be local to functions.

     logout [ n ]
	    Same as exit, except that it only works in a login shell.

     noglob simple command
	    See the section `Precommand Modifiers' in zshmisc(1).

     popd [ -q ] [ {+|-}n ]
	    Remove an entry from the directory stack, and perform a  cd  to  the
	    new  top  directory.  With no argument, the current top entry is re-
	    moved.  An argument of the form `+n' identifies  a	stack  entry  by
	    counting from the left of the list shown by the dirs command, start-
	    ing  with  zero.   An argument of the form -n counts from the right.
	    If the PUSHD_MINUS option is set, the meanings of  `+'  and  `-'  in
	    this context are swapped.

	    If	the  -q (quiet) option is specified, the hook function chpwd and
	    the functions in the array $chpwd_functions are not called, and  the
	    new  directory  stack  is  not printed.  This is useful for calls to
	    popd that do not change the environment seen by an interactive user.

     print [ -abcDilmnNoOpPrsSz ] [ -u n ] [ -f format ] [ -C cols ]
	   [ -v name ] [ -xX tabstop ] [ -R [ -en ]] [ arg ... ]
	    With the `-f' option the  arguments  are  printed  as  described  by
	    printf.   With  no	flags  or  with  the flag `-', the arguments are
	    printed on the standard output as described by echo, with  the  fol-
	    lowing  differences:  the escape sequence `\M-x' (or `\Mx') metafies
	    the character x (sets the highest bit), `\C-x' (or `\Cx') produces a
	    control character (`\C-@' and `\C-?' give the  characters  NULL  and
	    delete), a character code in octal is represented by `\NNN' (instead
	    of	`\0NNN'), and `\E' is a synonym for `\e'.  Finally, if not in an
	    escape sequence, `\' escapes the  following  character  and  is  not
	    printed.

	    -a	   Print  arguments  with  the	column incrementing first.  Only
		   useful with the -c and -C options.

	    -b	   Recognize all the escape sequences defined  for  the  bindkey
		   command, see the section `Zle Builtins' in zshzle(1).

	    -c	   Print the arguments in columns.  Unless -a is also given, ar-
		   guments are printed with the row incrementing first.

	    -C cols
		   Print  the  arguments  in  cols  columns.   Unless -a is also
		   given, arguments are printed with the row incrementing first.

	    -D	   Treat the arguments as paths,  replacing  directory	prefixes
		   with  ~  expressions corresponding to directory names, as ap-
		   propriate.

	    -i	   If given  together  with  -o  or  -O,  sorting  is  performed
		   case-independently.

	    -l	   Print  the arguments separated by newlines instead of spaces.
		   Note: if the list of arguments is empty, print -l will  still
		   output  one empty line. To print a possibly-empty list of ar-
		   guments one per line, use print -C1, as  in	`print	-rC1  --
		   "$list[@]"'.

	    -m	   Take  the first argument as a pattern (should be quoted), and
		   remove it from the argument list together with subsequent ar-
		   guments that do not match this pattern.

	    -n	   Do not add a newline to the output.

	    -N	   Print the arguments separated and terminated by nulls. Again,
		   print -rNC1 -- "$list[@]" is a canonical way to print an  ar-
		   bitrary list as null-delimited records.

	    -o	   Print the arguments sorted in ascending order.

	    -O	   Print the arguments sorted in descending order.

	    -p	   Print the arguments to the input of the coprocess.

	    -P	   Perform  prompt  expansion (see EXPANSION OF PROMPT SEQUENCES
		   in zshmisc(1)).  In combination with `-f', prompt escape  se-
		   quences  are  parsed  only within interpolated arguments, not
		   within the format string.

	    -r	   Ignore the escape conventions of echo.

	    -R	   Emulate the BSD echo command, which does not  process  escape
		   sequences  unless  the  -e  flag  is given.	The -n flag sup-
		   presses the trailing newline.  Only the -e and -n  flags  are
		   recognized  after  -R;  all	other  arguments and options are
		   printed.

	    -s	   Place the results in the history list instead of on the stan-
		   dard output.  Each argument to the print command  is  treated
		   as a single word in the history, regardless of its content.

	    -S	   Place the results in the history list instead of on the stan-
		   dard output.  In this case only a single argument is allowed;
		   it  will  be split into words as if it were a full shell com-
		   mand line.  The effect is similar to reading the line from  a
		   history file with the HIST_LEX_WORDS option active.

	    -u n   Print the arguments to file descriptor n.

	    -v name
		   Store  the  printed	arguments  as the value of the parameter
		   name.

	    -x tab-stop
		   Expand leading tabs on each line of	output	in  the  printed
		   string  assuming  a tab stop every tab-stop characters.  This
		   is appropriate for formatting code that may be indented  with
		   tabs.   Note  that leading tabs of any argument to print, not
		   just the first, are expanded, even if print is  using  spaces
		   to  separate arguments (the column count is maintained across
		   arguments but may be incorrect on output  owing  to	previous
		   unexpanded tabs).

		   The	start  of the output of each print command is assumed to
		   be aligned with a tab stop.	Widths of  multibyte  characters
		   are	handled  if the option MULTIBYTE is in effect.	This op-
		   tion is ignored if other formatting options	are  in  effect,
		   namely column alignment or printf style, or if output is to a
		   special  location  such  as shell history or the command line
		   editor.

	    -X tab-stop
		   This is similar to -x, except that all tabs	in  the  printed
		   string  are expanded.  This is appropriate if tabs in the ar-
		   guments are being used to produce a table format.

	    -z	   Push the arguments onto the editing buffer  stack,  separated
		   by spaces.

	    If	any  of `-m', `-o' or `-O' are used in combination with `-f' and
	    there are no arguments (after the removal process  in  the	case  of
	    `-m') then nothing is printed.

     printf [ -v name ] format [ arg ... ]
	    Print  the	arguments according to the format specification. Format-
	    ting rules are the same as used in C. The same escape  sequences  as
	    for  echo  are recognised in the format. All C conversion specifica-
	    tions ending in one of csdiouxXeEfgGn are handled.	In  addition  to
	    this,  `%b' can be used instead of `%s' to cause escape sequences in
	    the argument to be recognised and `%q' can be used to quote the  ar-
	    gument  in	such  a  way that allows it to be reused as shell input.
	    With the numeric format specifiers, if  the  corresponding	argument
	    starts  with  a  quote character, the numeric value of the following
	    character is used as the number to print; otherwise the argument  is
	    evaluated  as  an arithmetic expression. See the section `Arithmetic
	    Evaluation' in zshmisc(1) for a description  of  arithmetic  expres-
	    sions.  With `%n', the corresponding argument is taken as an identi-
	    fier which is created as an integer parameter.

	    Normally, conversion specifications are applied to each argument  in
	    order but they can explicitly specify the nth argument is to be used
	    by	replacing `%' by `%n$' and `*' by `*n$'.  It is recommended that
	    you do not mix references of this explicit	style  with  the  normal
	    style and the handling of such mixed styles may be subject to future
	    change.

	    If	arguments  remain  unused after formatting, the format string is
	    reused until all  arguments  have  been  consumed.	With  the  print
	    builtin,  this can be suppressed by using the -r option. If more ar-
	    guments are required by the format than have been specified, the be-
	    haviour is as if zero or an empty string had been specified  as  the
	    argument.

	    The -v option causes the output to be stored as the value of the pa-
	    rameter name, instead of printed. If name is an array and the format
	    string  is	reused	when  consuming arguments then one array element
	    will be used for each use of the format string.

     pushd [ -qsLP ] [ arg ]
     pushd [ -qsLP ] old new
     pushd [ -qsLP ] {+|-}n
	    Change the current directory, and push  the  old  current  directory
	    onto the directory stack.  In the first form, change the current di-
	    rectory  to  arg.  If arg is not specified, change to the second di-
	    rectory on the stack (that is, exchange the  top  two  entries),  or
	    change  to	$HOME  if the PUSHD_TO_HOME option is set or if there is
	    only one entry on the stack.  Otherwise, arg is  interpreted  as  it
	    would  be  by  cd.	The meaning of old and new in the second form is
	    also the same as for cd.

	    The third form of pushd changes directory by rotating the  directory
	    list.   An	argument  of  the  form `+n' identifies a stack entry by
	    counting from the left of the list shown by the dirs command, start-
	    ing with zero.  An argument of the form `-n' counts from the  right.
	    If	the  PUSHD_MINUS  option  is set, the meanings of `+' and `-' in
	    this context are swapped.

	    If the -q (quiet) option is specified, the hook function  chpwd  and
	    the  functions in the array $chpwd_functions are not called, and the
	    new directory stack is not printed.  This is  useful  for  calls  to
	    pushd  that  do  not  change  the environment seen by an interactive
	    user.

	    If the option -q is not specified and the shell option  PUSHD_SILENT
	    is	not  set,  the	directory stack will be printed after a pushd is
	    performed.

	    The options -s, -L and -P have the	same  meanings	as  for  the  cd
	    builtin.

     pushln [ arg ... ]
	    Equivalent to print -nz.

     pwd [ -rLP ]
	    Print  the	absolute  pathname of the current working directory.  If
	    the -r or the -P flag is specified, or the CHASE_LINKS option is set
	    and the -L flag is not given, the printed path will not contain sym-
	    bolic links.

     r	    Same as fc -e -.

     read [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ]
	  [ -u n ] [ [name][?prompt] ] [ name ...  ]
	    Read one line and break it into fields using the characters in  $IFS
	    as	separators,  except as noted below.  The first field is assigned
	    to the first name, the second field to the second name,  etc.,  with
	    leftover  fields assigned to the last name.  If name is omitted then
	    REPLY is used for scalars and reply for arrays.

	    -r	   Raw mode: a `\' at the end of a line does  not  signify  line
		   continuation and backslashes in the line don't quote the fol-
		   lowing character and are not removed.

	    -s	   Don't echo back characters if reading from the terminal.

	    -q	   Read only one character from the terminal and set name to `y'
		   if  this character was `y' or `Y' and to `n' otherwise.  With
		   this flag set the return status is zero only if the character
		   was `y' or `Y'.  This option may be used with a timeout  (see
		   -t); if the read times out, or encounters end of file, status
		   2 is returned.  Input is read from the terminal unless one of
		   -u or -p is present.  This option may also be used within zle
		   widgets.

	    -k [ num ]
		   Read  only  one (or num) characters.  All are assigned to the
		   first name, without word splitting.	 This  flag  is  ignored
		   when  -q  is present.  Input is read from the terminal unless
		   one of -u or -p is present.	This option  may  also	be  used
		   within zle widgets.

		   Note  that  despite	the mnemonic `key' this option does read
		   full characters, which may consist of multiple bytes  if  the
		   option MULTIBYTE is set.

	    -z	   Read  one entry from the editor buffer stack and assign it to
		   the first name, without word splitting.  Text is pushed  onto
		   the stack with `print -z' or with push-line from the line ed-
		   itor (see zshzle(1)).  This flag is ignored when the -k or -q
		   flags are present.

	    -e
	    -E	   The	input  read  is printed (echoed) to the standard output.
		   If the -e flag is used, no input is assigned to  the  parame-
		   ters.

	    -A	   The first name is taken as the name of an array and all words
		   are assigned to it.

	    -c
	    -l	   These flags are allowed only if called inside a function used
		   for	completion  (specified with the -K flag to compctl).  If
		   the -c flag is given, the words of the  current  command  are
		   read.  If the -l flag is given, the whole line is assigned as
		   a scalar.  If both flags are present, -l is used  and  -c  is
		   ignored.

	    -n	   Together  with -c, the number of the word the cursor is on is
		   read.  With -l, the index of the character the cursor  is  on
		   is  read.   Note  that the command name is word number 1, not
		   word 0, and that when the cursor is at the end of  the  line,
		   its character index is the length of the line plus one.

	    -u n   Input is read from file descriptor n.

	    -p	   Input is read from the coprocess.

	    -d delim
		   Input  is  terminated by the first character of delim instead
		   of by newline.

	    -t [ num ]
		   Test if input is available before attempting to read.  If num
		   is present, it must begin with a digit and will be  evaluated
		   to  give  a	number of seconds, which may be a floating point
		   number; in this case the read  times  out  if  input  is  not
		   available  within  this  time.   If num is not present, it is
		   taken to be zero, so that read returns immediately if no  in-
		   put	is available.  If no input is available, return status 1
		   and do not set any variables.

		   This option is not available when  reading  from  the  editor
		   buffer with -z, when called from within completion with -c or
		   -l,	with  -q which clears the input queue before reading, or
		   within zle where other mechanisms should be used to test  for
		   input.

		   Note that read does not attempt to alter the input processing
		   mode.   The	default mode is canonical input, in which an en-
		   tire line is read at a time, so usually `read  -t'  will  not
		   read  anything until an entire line has been typed.	However,
		   when reading from the terminal with -k input is processed one
		   key at a time; in this case, only availability of  the  first
		   character  is  tested,  so that e.g. `read -t -k 2' can still
		   block on the second character.  Use two instances of `read -t
		   -k' if this is not what is wanted.

	    If the first argument contains a `?', the remainder of this word  is
	    used as a prompt on standard error when the shell is interactive.

	    The  value (exit status) of read is 1 when an end-of-file is encoun-
	    tered, or when -c or -l is present and the	command  is  not  called
	    from  a  compctl  function,  or  as described for -q.  Otherwise the
	    value is 0.

	    The behavior of some combinations of the -k, -p, -q, -u and -z flags
	    is undefined.  Presently -q cancels all the others, -p  cancels  -u,
	    -k cancels -z, and otherwise -z cancels both -p and -u.

	    The -c or -l flags cancel any and all of -kpquz.

     readonly
	    Same  as  typeset  -r.   With the POSIX_BUILTINS option set, same as
	    typeset -gr.

     rehash
	    Same as hash -r.

     return [ n ]
	    Causes a shell function or `.' script  to  return  to  the	invoking
	    script  with the return status specified by an arithmetic expression
	    n.	For example, the following prints `42':

		   () { integer foo=40; return "foo + 2" }
		   echo $?

	    If n is omitted, the return status is that of the last command  exe-
	    cuted.

	    If return was executed from a trap in a TRAPNAL function, the effect
	    is	different for zero and non-zero return status.	With zero status
	    (or after an implicit return at the end of the trap), the shell will
	    return to whatever it was previously  processing;  with  a	non-zero
	    status,  the shell will behave as interrupted except that the return
	    status of the trap is retained.  Note that the numeric value of  the
	    signal which caused the trap is passed as the first argument, so the
	    statement  `return	"128+$1"'  will return the same status as if the
	    signal had not been trapped.

     sched  See the section `The zsh/sched Module' in zshmodules(1).

     set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ]
	 [ arg ... ]
	    Set the options for the shell and/or set the positional  parameters,
	    or	declare  and set an array.  If the -s option is given, it causes
	    the specified arguments to be sorted before assigning  them  to  the
	    positional parameters (or to the array name if -A is used).  With +s
	    sort  arguments  in  descending order.  For the meaning of the other
	    flags, see zshoptions(1).  Flags may be specified by name using  the
	    -o option. If no option name is supplied with -o, the current option
	    states  are  printed:   see the description of setopt below for more
	    information on the format.	With +o they are printed in a form  that
	    can be used as input to the shell.

	    If	the -A flag is specified, name is set to an array containing the
	    given args; if no name is specified, all arrays are printed together
	    with their values.

	    If +A is used and name is an array, the given arguments will replace
	    the initial elements of that array; if no name is specified, all ar-
	    rays are printed without their values.

	    The behaviour of arguments after -A  name  or  +A  name  depends  on
	    whether  the  option KSH_ARRAYS is set.  If it is not set, all argu-
	    ments following name are treated as values for the array, regardless
	    of their form.  If the option is set, normal option processing  con-
	    tinues  at	that point; only regular arguments are treated as values
	    for the array.  This means that

		   set -A array -x -- foo

	    sets array to `-x -- foo' if KSH_ARRAYS is not set, but sets the ar-
	    ray to foo and turns on the option `-x' if it is set.

	    If the -A flag is not present, but there are  arguments  beyond  the
	    options,  the positional parameters are set.  If the option list (if
	    any) is terminated by `--', and there are no further arguments,  the
	    positional parameters will be unset.

	    If	no arguments and no `--' are given, then the names and values of
	    all parameters are printed on the standard output.	If the only  ar-
	    gument is `+', the names of all parameters are printed.

	    For  historical  reasons, `set -' is treated as `set +xv' and `set -
	    args' as `set +xv -- args' when in any  other  emulation  mode  than
	    zsh's native mode.

     setcap
	    See the section `The zsh/cap Module' in zshmodules(1).

     setopt [ {+|-}options | {+|-}o option_name ] [ -m ] [ name ... ]
	    Set  the  options  for the shell.  All options specified either with
	    flags or by name are set.

	    If no arguments are supplied, the names of all options currently set
	    are printed.  The form is chosen so as to minimize	the  differences
	    from the default options for the current emulation (the default emu-
	    lation  being  native  zsh, shown as <Z> in zshoptions(1)).  Options
	    that are on by default for the emulation are shown with  the  prefix
	    no	only  if they are off, while other options are shown without the
	    prefix no and only if they are on.	In addition to	options  changed
	    from  the default state by the user, any options activated automati-
	    cally by the shell (for example, SHIN_STDIN or INTERACTIVE) will  be
	    shown  in  the  list.   The format is further modified by the option
	    KSH_OPTION_PRINT, however the rationale for choosing options with or
	    without the no prefix remains the same in this case.

	    If the -m flag is given the arguments are taken as	patterns  (which
	    should  be	quoted to protect them from filename expansion), and all
	    options with names matching these patterns are set.

	    Note that a bad option name does not cause execution  of  subsequent
	    shell  code  to be aborted; this is behaviour is different from that
	    of `set -o'.  This is because set is regarded as a	special  builtin
	    by the POSIX standard, but setopt is not.

     shift [ -p ] [ n ] [ name ... ]
	    The  positional parameters ${n+1} ... are renamed to $1 ..., where n
	    is an arithmetic expression that defaults to 1.  If  any  names  are
	    given  then  the  arrays with these names are shifted instead of the
	    positional parameters.

	    If the option -p is given arguments  are  instead  removed	(popped)
	    from the end rather than the start of the array.

     source file [ arg ... ]
	    Same  as  `.',  except that the current directory is always searched
	    and is always searched first, before directories in $path.

     stat   See the section `The zsh/stat Module' in zshmodules(1).

     suspend [ -f ]
	    Suspend the execution of the shell (send it a SIGTSTP) until it  re-
	    ceives  a  SIGCONT.  Unless the -f option is given, this will refuse
	    to suspend a login shell.

     test [ arg ... ]
     [ [ arg ... ] ]
	    Like the system version of test.  Added for compatibility; use  con-
	    ditional  expressions  instead (see the section `Conditional Expres-
	    sions').  The main differences between  the  conditional  expression
	    syntax and the test and [ builtins are:  these commands are not han-
	    dled  syntactically,  so for example an empty variable expansion may
	    cause an argument to be omitted; syntax errors cause status 2 to  be
	    returned  instead  of a shell error; and arithmetic operators expect
	    integer arguments rather than arithmetic expressions.

	    The command attempts to implement POSIX  and  its  extensions  where
	    these  are specified.  Unfortunately there are intrinsic ambiguities
	    in the syntax; in particular there is no  distinction  between  test
	    operators  and strings that resemble them.	The standard attempts to
	    resolve these for small numbers of arguments (up to four); for  five
	    or	more  arguments  compatibility	cannot	be relied on.  Users are
	    urged wherever possible to use the `[[' test syntax which  does  not
	    have these ambiguities.

     times  Print  the	accumulated  user and system times for the shell and for
	    processes run from the shell.

     trap [ arg ] [ sig ... ]
	    arg is a series of commands (usually quoted to protect it from imme-
	    diate evaluation by the shell) to be  read	and  executed  when  the
	    shell receives any of the signals specified by one or more sig args.
	    Each sig can be given as a number, or as the name of a signal either
	    with or without the string SIG in front (e.g. 1, HUP, and SIGHUP are
	    all the same signal).

	    If	arg  is  `-',  then the specified signals are reset to their de-
	    faults, or, if no sig args are present, all traps are reset.

	    If arg is an empty string, then the specified signals are ignored by
	    the shell (and by the commands it invokes).

	    If arg is omitted but one or more sig args are provided  (i.e.   the
	    first  argument is a valid signal number or name), the effect is the
	    same as if arg had been specified as `-'.

	    The trap command with no arguments prints a list of commands associ-
	    ated with each signal.

	    If sig is ZERR then arg will be executed after each command  with  a
	    nonzero  exit status.  ERR is an alias for ZERR on systems that have
	    no SIGERR signal (this is the usual case).

	    If sig is DEBUG then arg will be executed before each command if the
	    option DEBUG_BEFORE_CMD is set (as it is  by  default),  else  after
	    each command.  Here, a `command' is what is described as a `sublist'
	    in the shell grammar, see the section SIMPLE COMMANDS & PIPELINES in
	    zshmisc(1).   If DEBUG_BEFORE_CMD is set various additional features
	    are available.  First, it is possible to skip the  next  command  by
	    setting the option ERR_EXIT; see the description of the ERR_EXIT op-
	    tion  in  zshoptions(1).  Also, the shell parameter ZSH_DEBUG_CMD is
	    set to the string corresponding to the command to be  executed  fol-
	    lowing  the  trap.	 Note that this string is reconstructed from the
	    internal format and may not be formatted the same way as the  origi-
	    nal text.  The parameter is unset after the trap is executed.

	    If	sig  is  0 or EXIT and the trap statement is executed inside the
	    body of a function, then the command arg is executed after the func-
	    tion completes.  The value of $? at the start of  execution  is  the
	    exit  status of the shell or the return status of the function exit-
	    ing.  If sig is 0 or EXIT and the trap statement is not executed in-
	    side the body of a function, then the command arg is  executed  when
	    the  shell	terminates;  the trap runs before any zshexit hook func-
	    tions.

	    ZERR, DEBUG, and EXIT traps are not  executed  inside  other  traps.
	    ZERR  and  DEBUG  traps are kept within subshells, while other traps
	    are reset.

	    Note that traps defined with the trap builtin are slightly different
	    from those defined as `TRAPNAL () { ... }', as the latter have their
	    own function environment (line numbers, local variables, etc.) while
	    the former use the environment of the command  in  which  they  were
	    called.  For example,

		   trap 'print $LINENO' DEBUG

	    will  print  the line number of a command executed after it has run,
	    while

		   TRAPDEBUG() { print $LINENO; }

	    will always print the number zero.

	    Alternative signal names are allowed as described under kill  above.
	    Defining  a trap under either name causes any trap under an alterna-
	    tive name to be removed.  However, it is recommended that  for  con-
	    sistency users stick exclusively to one name or another.

     true [ arg ... ]
	    Do nothing and return an exit status of 0.

     ttyctl [ -fu ]
	    The  -f option freezes the tty (i.e. terminal or terminal emulator),
	    and -u unfreezes it.  When the tty is frozen, no changes made to the
	    tty settings by external programs will be honored by the shell,  ex-
	    cept  for  changes	in the size of the screen; the shell will simply
	    reset the settings to their previous values as soon as each  command
	    exits  or is suspended.  Thus, stty and similar programs have no ef-
	    fect when the tty is frozen.  Freezing the tty does  not  cause  the
	    current state to be remembered: instead, it causes future changes to
	    the state to be blocked.

	    Without options it reports whether the terminal is frozen or not.

	    Note that, regardless of whether the tty is frozen or not, the shell
	    needs  to  change  the  settings when the line editor starts, so un-
	    freezing the tty does not guarantee settings  made	on  the  command
	    line  are  preserved.   Strings  of commands run between editing the
	    command line will see a consistent tty state.  See	also  the  shell
	    variable STTY for a means of initialising the tty before running ex-
	    ternal commands and/or freezing the tty around a single command.

     type [ -wfpamsS ] name ...
	    Equivalent to whence -v.

     typeset [ {+|-}AHUaghlmrtux ] [ {+|-}EFLRZip [ n ] ]
	     [ + ] [ name[=value] ... ]
     typeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ n ] ]
	     [ + | SCALAR[=value] array[=(value ...)] [ sep ] ]
     typeset -f [ {+|-}TUkmtuz ] [ + ] [ name ... ]
	    Set or display attributes and values for shell parameters.

	    Except  as noted below for control flags that change the behavior, a
	    parameter is created for each name that does not  already  refer  to
	    one.   When  inside a function, a new parameter is created for every
	    name (even those that already exist), and is unset	again  when  the
	    function  completes.   See	`Local	Parameters' in zshparam(1).  The
	    same rules apply to special shell  parameters,  which  retain  their
	    special attributes when made local.

	    For  each name=value assignment, the parameter name is set to value.
	    If the assignment is omitted and name does not refer to an	existing
	    parameter,	a new parameter is initialized to empty string, zero, or
	    empty array (as appropriate), unless the shell option TYPESET_TO_UN-
	    SET is set.  When that option is set, the parameter  attributes  are
	    recorded but the parameter remains unset.

	    If	the  shell  option TYPESET_SILENT is not set, for each remaining
	    name that refers to a parameter that is already set,  the  name  and
	    value  of  the  parameter  are printed in the form of an assignment.
	    Nothing is printed for newly-created parameters,  or  when	any  at-
	    tribute flags listed below are given along with the name.  Using `+'
	    instead of minus to introduce an attribute turns it off.

	    If	no  name  is present, the names and values of all parameters are
	    printed.  In this case the attribute flags restrict the  display  to
	    only  those parameters that have the specified attributes, and using
	    `+' rather than `-' to introduce the flag suppresses printing of the
	    values of parameters when there is no parameter name.

	    All forms of the command handle scalar assignment.	Array assignment
	    is possible if any of the reserved words declare, export, float, in-
	    teger, local, readonly or typeset is matched when the line is parsed
	    (N.B. not when it is executed).  In  this  case  the  arguments  are
	    parsed  as assignments, except that the `+=' syntax and the GLOB_AS-
	    SIGN option are not supported, and scalar values  after  =	are  not
	    split  further  into words, even if expanded (regardless of the set-
	    ting of the KSH_TYPESET option; this option is obsolete).

	    Examples of the differences between command and reserved word  pars-
	    ing:

		   # Reserved word parsing
		   typeset svar=$(echo one word) avar=(several words)

	    The  above	creates  a  scalar parameter svar and an array parameter
	    avar as if the assignments had been

		   svar="one word"
		   avar=(several words)

	    On the other hand:

		   # Normal builtin interface
		   builtin typeset svar=$(echo two words)

	    The builtin keyword causes the above to use the standard builtin in-
	    terface to typeset in which argument parsing  is  performed  in  the
	    same  way as for other commands.  This example creates a scalar svar
	    containing the value two and another scalar parameter words with  no
	    value.   An  array value in this case would either cause an error or
	    be treated as an obscure set of glob qualifiers.

	    Arbitrary arguments are allowed if they take the form of assignments
	    after command line expansion; however, these only perform scalar as-
	    signment:

		   var='svar=val'
		   typeset $var

	    The above sets the scalar parameter svar to the value  val.   Paren-
	    theses  around the value within var would not cause array assignment
	    as they will be treated as ordinary characters when $var is  substi-
	    tuted.  Any non-trivial expansion in the name part of the assignment
	    causes the argument to be treated in this fashion:

		   typeset {var1,var2,var3}=name

	    The  above	syntax	is valid, and has the expected effect of setting
	    the three parameters to the same value,  but  the  command	line  is
	    parsed  as	a  set of three normal command line arguments to typeset
	    after expansion.  Hence it is not possible to assign to multiple ar-
	    rays by this means.

	    Note that each interface to any of the commands may be disabled sep-
	    arately.  For example, `disable -r typeset'  disables  the	reserved
	    word  interface  to  typeset,  exposing the builtin interface, while
	    `disable typeset' disables the builtin.  Note that disabling the re-
	    served word interface for typeset may cause problems with the output
	    of `typeset -p', which assumes the reserved word interface is avail-
	    able in order to restore array and associative array values.

	    Unlike parameter assignment statements, typeset's exit status on  an
	    assignment that involves a command substitution does not reflect the
	    exit  status of the command substitution.  Therefore, to test for an
	    error in a command substitution, separate the declaration of the pa-
	    rameter from its initialization:

		   # WRONG
		   typeset var1=$(exit 1) || echo "Trouble with var1"

		   # RIGHT
		   typeset var1 && var1=$(exit 1) || echo "Trouble with var1"

	    To initialize a parameter param to a  command  output  and	mark  it
	    readonly, use typeset -r param or readonly param after the parameter
	    assignment statement.

	    If	no  attribute  flags are given, and either no name arguments are
	    present or the flag +m is used, then each parameter name printed  is
	    preceded by a list of the attributes of that parameter (array, asso-
	    ciation,  exported,  float,  integer, readonly, or undefined for au-
	    toloaded parameters not yet loaded).  If +m is used  with  attribute
	    flags, and all those flags are introduced with +, the matching para-
	    meter names are printed but their values are not.

	    The following control flags change the behavior of typeset:

	    +	   If  `+'  appears by itself in a separate word as the last op-
		   tion, then the names of all parameters  (functions  with  -f)
		   are	printed,  but  the values (function bodies) are not.  If
		   name arguments appear, both those names and their values  are
		   printed  in	the form of assignments.  It is an error for any
		   other options to follow `+', but the effect of `+' is  as  if
		   all	attribute  flags  which precede it were given with a `+'
		   prefix.  For example, `typeset -U +' is equivalent to  `type-
		   set	+U'  and  displays  the  names	of all arrays having the
		   uniqueness attribute, whereas `typeset -f -U +' displays  the
		   names  of  all  autoloadable functions.  If + is the only op-
		   tion, then type information (array, readonly, etc.)	is  also
		   printed for each parameter, in the same manner as `typeset +m
		   "*"'.

	    -g	   The	-g  (global) means that any resulting parameter will not
		   be restricted to local scope.  Note that this does not neces-
		   sarily mean that the parameter will be global,  as  the  flag
		   will  apply to any existing parameter (even if unset) from an
		   enclosing function.	This flag does not affect the  parameter
		   after  creation, hence it has no effect when listing existing
		   parameters, nor does the flag +g have any  effect  except  in
		   combination with -m (see below).

	    -m	   If  the -m flag is given the name arguments are taken as pat-
		   terns (use quoting to prevent these from being interpreted as
		   file patterns).  With no attribute flags, all parameters  (or
		   functions  with  the -f flag) with matching names are printed
		   (the shell option TYPESET_SILENT is not used in this case).

		   If the +g flag is combined with -m, a new local parameter  is
		   created  for every matching parameter that is not already lo-
		   cal.  Otherwise -m applies all other flags or assignments  to
		   the existing parameters.

		   Except  when  assignments  are made with name=value, using +m
		   forces the matching parameters and  their  attributes  to  be
		   printed,  even inside a function.  Note that -m is ignored if
		   no patterns are given, so `typeset  -m'  displays  attributes
		   but `typeset -a +m' does not.  Ordinary scalar string parame-
		   ters  have  no  attributes,	so  for those +m prints only the
		   names.

	    -p [ n ]
		   If the -p option is given, parameters and values are  printed
		   in  the form of a typeset command with an assignment, regard-
		   less of other flags and options.  Note that the  -H	flag  on
		   parameters is respected; no value will be shown for these pa-
		   rameters.

		   -p  may  be	followed  by an optional integer argument.  Cur-
		   rently only the value 1 is supported.  In  this  case  arrays
		   and	associative arrays are printed with newlines between in-
		   dented elements for readability.

	    -T [ scalar[=value] array[=(value ...)] [ sep ] ]
		   This flag has a different meaning when used with -f; see  be-
		   low.   Otherwise  the  -T option requires zero, two, or three
		   arguments to be present.  With no arguments, the list of  pa-
		   rameters created in this fashion is shown.  With two or three
		   arguments,  the  first two are the name of a scalar and of an
		   array parameter (in that order) that will be tied together in
		   the manner of $PATH and $path.  The optional  third	argument
		   is  a  single-character  separator which will be used to join
		   the elements of the array to form the scalar;  if  absent,  a
		   colon  is  used,  as with $PATH.  Only the first character of
		   the separator is significant; any  remaining  characters  are
		   ignored.  Multibyte characters are not yet supported.

		   Only  one  of the scalar and array parameters may be assigned
		   an initial value (the restrictions on  assignment  forms  de-
		   scribed above also apply).

		   Both  the  scalar and the array may be manipulated as normal.
		   If one is unset, the other will automatically be  unset  too.
		   There  is  no  way of untying the variables without unsetting
		   them, nor of converting the type of one of them with  another
		   typeset  command;  +T  does	not  work, assigning an array to
		   scalar is an error, and assigning a scalar to array	sets  it
		   to be a single-element array.

		   Note  that  both `typeset -xT ...'  and `export -T ...' work,
		   but only the scalar will be marked for export.   Setting  the
		   value  using the scalar version causes a split on all separa-
		   tors (which cannot be quoted).  It is possible to apply -T to
		   two previously tied variables but with a different  separator
		   character,  in  which case the variables remain joined as be-
		   fore but the separator is changed.

		   When an existing scalar is tied to a new array, the value  of
		   the	scalar	is  preserved but no attribute other than export
		   will be preserved.

	    Attribute flags that transform the final value (-L, -R, -Z, -l,  -u)
	    are  only  applied to the expanded value at the point of a parameter
	    expansion expression using `$'.  They are not applied when a parame-
	    ter is retrieved internally by the shell for any purpose.

	    The following attribute flags may be specified:

	    -A	   The names refer to associative array parameters;  see  `Array
		   Parameters' in zshparam(1).

	    -L [ n ]
		   Left  justify  and  remove leading blanks from the value when
		   the parameter is expanded.  If n is nonzero, it  defines  the
		   width of the field.	If n is zero, the width is determined by
		   the	width of the value of the first assignment.  In the case
		   of numeric parameters, the length of the complete  value  as-
		   signed  to  the parameter is used to determine the width, not
		   the value that would be output.

		   The width is the count of characters, which may be  multibyte
		   characters  if  the MULTIBYTE option is in effect.  Note that
		   the screen width of the character is not taken into	account;
		   if  this  is  required,  use padding with parameter expansion
		   flags ${(ml...)...}	as  described  in  `Parameter  Expansion
		   Flags' in zshexpn(1).

		   When  the  parameter  is  expanded, it is filled on the right
		   with blanks or truncated if necessary to fit the field.  Note
		   truncation can lead to unexpected results with numeric  para-
		   meters.   Leading  zeros  are  removed if the -Z flag is also
		   set.

	    -R [ n ]
		   Similar to -L, except that right justification is used;  when
		   the	parameter  is  expanded,  the  field is left filled with
		   blanks or truncated from the end.  May not be  combined  with
		   the -Z flag.

	    -U	   For	arrays	(but  not for associative arrays), keep only the
		   first occurrence of each duplicated value.  This may also  be
		   set	for  tied parameters (see -T) or colon-separated special
		   parameters like PATH or FIGNORE, etc.  Note	the  flag  takes
		   effect  on assignment, and the type of the variable being as-
		   signed to is determinative; for variables with shared  values
		   it  is  therefore  recommended to set the flag for all inter-
		   faces, e.g. `typeset -U PATH path'.

		   This flag has a different meaning when used with -f; see  be-
		   low.

	    -Z [ n ]
		   Specially  handled if set along with the -L flag.  Otherwise,
		   similar to -R, except that leading zeros are used for padding
		   instead of blanks if  the  first  non-blank	character  is  a
		   digit.   Numeric  parameters  are specially handled: they are
		   always eligible for padding with zeroes, and the  zeroes  are
		   inserted at an appropriate place in the output.

	    -a	   The	names refer to array parameters.  An array parameter may
		   be created this way, but it may be assigned to in the typeset
		   statement only if the reserved word form of	typeset  is  en-
		   abled  (as  it  is by default).  When displaying, both normal
		   and associative arrays are shown.

	    -f	   The names refer to functions rather than parameters.  No  as-
		   signments can be made, and the only other valid flags are -t,
		   -T,	-k, -u, -U and -z.  The flag -t turns on execution trac-
		   ing for this function; the flag -T does the same,  but  turns
		   off	tracing  for  any  named (not anonymous) function called
		   from the present one, unless that function also has the -t or
		   -T flag.  The -u and -U flags cause the function to be marked
		   for autoloading; -U also causes alias expansion  to	be  sup-
		   pressed  when the function is loaded.  See the description of
		   the `autoload' builtin for details.

		   Note that the builtin functions provides the same basic capa-
		   bilities as typeset -f but gives access to a  few  extra  op-
		   tions; autoload gives further additional options for the case
		   typeset -fu and typeset -fU.

	    -h	   Hide:  only useful for special parameters (those marked `<S>'
		   in the table in zshparam(1)), and for local	parameters  with
		   the	same  name  as	a special parameter, though harmless for
		   others.  A special parameter with this attribute will not re-
		   tain its special effect when made local.  Thus after `typeset
		   -h PATH', a function containing `typeset PATH' will create an
		   ordinary local parameter without the usual behaviour of PATH.
		   Alternatively, the local parameter may itself be  given  this
		   attribute;  hence inside a function `typeset -h PATH' creates
		   an ordinary local parameter and the special PATH parameter is
		   not altered in any way.  It is also possible to create a  lo-
		   cal	parameter  using  `typeset  +h special', where the local
		   copy of special will retain its special properties regardless
		   of having the -h attribute.	Global special parameters loaded
		   from  shell	modules  (currently  those  in	zsh/mapfile  and
		   zsh/parameter)  are	automatically  given the -h attribute to
		   avoid name clashes.

	    -H	   Hide value: specifies that typeset will not display the value
		   of the parameter when listing  parameters;  the  display  for
		   such  parameters is always as if the `+' flag had been given.
		   Use of the parameter is in other respects normal, and the op-
		   tion does not apply if the parameter is specified by name, or
		   by pattern with the -m option.  This is on by default for the
		   parameters in  the  zsh/parameter  and  zsh/mapfile	modules.
		   Note,  however,  that  unlike the -h flag this is also useful
		   for non-special parameters.

	    -i [ n ]
		   Use an internal integer representation.  If n is  nonzero  it
		   defines  the  output  arithmetic base, otherwise it is deter-
		   mined by the first assignment.  Bases from 2 to 36  inclusive
		   are allowed.

	    -E [ n ]
		   Use	an  internal double-precision floating point representa-
		   tion.  On output the variable will be converted to scientific
		   notation.  If n is nonzero it defines the number of	signifi-
		   cant figures to display; the default is ten.

	    -F [ n ]
		   Use	an  internal double-precision floating point representa-
		   tion.   On  output  the  variable  will   be   converted   to
		   fixed-point decimal notation.  If n is nonzero it defines the
		   number  of digits to display after the decimal point; the de-
		   fault is ten.

	    -l	   Convert the result to lower case whenever  the  parameter  is
		   expanded.  The value is not converted when assigned.

	    -r	   The	given names are marked readonly.  Note that if name is a
		   special parameter, the readonly attribute can be  turned  on,
		   but cannot then be turned off.

		   If  the  POSIX_BUILTINS option is set, the readonly attribute
		   is more restrictive: unset variables can be	marked	readonly
		   and	cannot	then be set; furthermore, the readonly attribute
		   cannot be removed from any variable.

		   It is still possible to change other attributes of the  vari-
		   able  though,  some	of  which like -U or -Z would affect the
		   value. More generally, the readonly attribute should  not  be
		   relied on as a security mechanism.

		   Note that in zsh (like in pdksh but unlike most other shells)
		   it  is  still possible to create a local variable of the same
		   name as this is considered a different variable (though  this
		   variable,  too,  can  be  marked readonly). Special variables
		   that have been made readonly retain their value and	readonly
		   attribute when made local.

	    -t	   Tags  the  named parameters.  Tags have no special meaning to
		   the shell.  This flag has a different meaning when used  with
		   -f; see above.

	    -u	   Convert  the  result  to upper case whenever the parameter is
		   expanded.  The value is not converted  when	assigned.   This
		   flag has a different meaning when used with -f; see above.

	    -x	   Mark  for automatic export to the environment of subsequently
		   executed commands.  If the option GLOBAL_EXPORT is set,  this
		   implies the option -g, unless +g is also explicitly given; in
		   other  words the parameter is not made local to the enclosing
		   function.  This is for compatibility with  previous	versions
		   of zsh.

     ulimit [ -HSa ] [ { -bcdfiklmnpqrsTtvwx | -N resource } [ limit ] ... ]
	    Set  or  display  resource	limits	of  the  shell and the processes
	    started by the shell.  The value of limit can be  a  number  in  the
	    unit specified below or one of the values `unlimited', which removes
	    the  limit	on the resource, or `hard', which uses the current value
	    of the hard limit on the resource.

	    By default, only soft limits are manipulated.  If  the  -H	flag  is
	    given  use	hard  limits  instead of soft limits.  If the -S flag is
	    given together with the -H flag set both hard and soft limits.

	    If no options are used, the file size limit (-f) is assumed.

	    If limit is omitted the current value of the specified resources are
	    printed.  When more than one resource value is  printed,  the  limit
	    name and unit is printed before each value.

	    When  looping  over multiple resources, the shell will abort immedi-
	    ately if it detects a badly formed argument.  However, if  it  fails
	    to	set a limit for some other reason it will continue trying to set
	    the remaining limits.

	    Not all the following resources are supported on all systems.   Run-
	    ning ulimit -a will show which are supported.

	    -a	   Lists all of the current resource limits.
	    -b	   Socket buffer size in bytes (N.B. not kilobytes)
	    -c	   512-byte blocks on the size of core dumps.
	    -d	   Kilobytes on the size of the data segment.
	    -f	   512-byte blocks on the size of files written.
	    -i	   The number of pending signals.
	    -k	   The number of kqueues allocated.
	    -l	   Kilobytes on the size of locked-in memory.
	    -m	   Kilobytes on the size of physical memory.
	    -n	   open file descriptors.
	    -p	   The number of pseudo-terminals.
	    -q	   Bytes in POSIX message queues.
	    -r	   Maximum  real  time	priority.  On some systems where this is
		   not available, such as NetBSD, this has the same effect as -T
		   for compatibility with sh.
	    -s	   Kilobytes on the size of the stack.
	    -T	   The number of simultaneous threads available to the user.
	    -t	   CPU seconds to be used.
	    -u	   The number of processes available to the user.
	    -v	   Kilobytes on the size of virtual  memory.   On  some  systems
		   this refers to the limit called `address space'.
	    -w	   Kilobytes on the size of swapped out memory.
	    -x	   The number of locks on files.

	    A  resource  may  also  be	specified by integer in the form `-N re-
	    source', where resource corresponds to the integer defined	for  the
	    resource  by the operating system.	This may be used to set the lim-
	    its for resources known to the shell which do not correspond to  op-
	    tion  letters.  Such limits will be shown by number in the output of
	    `ulimit -a'.

	    The number may alternatively be out of the range of limits	compiled
	    into  the shell.  The shell will try to read or write the limit any-
	    way, and will report an error if this fails.

     umask [ -S ] [ mask ]
	    The umask is set to mask.  mask can be either an octal number  or  a
	    symbolic  value  as  described in the chmod(1) man page.  If mask is
	    omitted, the current value is printed.  The  -S  option  causes  the
	    mask  to  be  printed  as  a symbolic value.  Otherwise, the mask is
	    printed as an octal number.  Note that in the symbolic form the per-
	    missions you specify are those which are to be allowed (not  denied)
	    to the users specified.

     unalias [ -ams ] name ...
	    Removes  aliases.	This command works the same as unhash -a, except
	    that the -a option removes all regular or global aliases, or with -s
	    all suffix aliases: in this case no name arguments may appear.   The
	    options -m (remove by pattern) and -s without -a (remove listed suf-
	    fix  aliases)  behave as for unhash -a.  Note that the meaning of -a
	    is different between unalias and unhash.

     unfunction
	    Same as unhash -f.

     unhash [ -adfms ] name ...
	    Remove the element named name from an internal hash table.	The  de-
	    fault is remove elements from the command hash table.  The -a option
	    causes  unhash to remove regular or global aliases; note when remov-
	    ing a global aliases that the argument must be quoted to prevent  it
	    from  being expanded before being passed to the command.  The -s op-
	    tion causes unhash to remove suffix aliases.  The -f  option  causes
	    unhash  to	remove shell functions.  The -d options causes unhash to
	    remove named directories.  If the -m flag is given the arguments are
	    taken as patterns (should be quoted) and all elements of the  corre-
	    sponding hash table with matching names will be removed.

     unlimit [ -hs ] resource ...
	    The  resource  limit for each resource is set to the hard limit.  If
	    the -h flag is given and the shell has appropriate	privileges,  the
	    hard  resource limit for each resource is removed.	The resources of
	    the shell process are only changed if the -s flag is given.

	    The unlimit command is not made available by default when the  shell
	    starts  in a mode emulating another shell.	It can be made available
	    with the command `zmodload -F zsh/rlimits b:unlimit'.

     unset [ -fmv ] name ...
	    Each named parameter is unset.  Local parameters remain  local  even
	    if	unset;	they  appear  unset within scope, but the previous value
	    will still reappear when the scope ends.

	    Individual elements of associative array parameters may be unset  by
	    using  subscript  syntax on name, which should be quoted (or the en-
	    tire command prefixed with noglob) to  protect  the  subscript  from
	    filename generation.

	    If	the  -m  flag  is  specified the arguments are taken as patterns
	    (should be quoted) and all parameters with matching names are unset.
	    Note that this cannot be used when unsetting associative array  ele-
	    ments, as the subscript will be treated as part of the pattern.

	    The  -v  flag  specifies that name refers to parameters. This is the
	    default behaviour.

	    unset -f is equivalent to unfunction.

     unsetopt [ {+|-}options | {+|-}o option_name ] [ name ... ]
	    Unset the options for the shell.  All options specified either  with
	    flags or by name are unset.  If no arguments are supplied, the names
	    of all options currently unset are printed.  If the -m flag is given
	    the  arguments are taken as patterns (which should be quoted to pre-
	    serve them from being interpreted as glob patterns), and all options
	    with names matching these patterns are unset.

     vared  See the section `Zle Builtins' in zshzle(1).

     wait [ job ... ]
	    Wait for the specified jobs or processes.  If job is not given  then
	    all  currently  active child processes are waited for.  Each job can
	    be either a job specification or the process ID of a job in the  job
	    table.   The exit status from this command is that of the job waited
	    for.  If job represents an unknown job or process ID, a  warning  is
	    printed  (unless the POSIX_BUILTINS option is set) and the exit sta-
	    tus is 127.

	    It is possible to wait for recent processes  (specified  by  process
	    ID,  not  by  job)	that  were running in the background even if the
	    process has exited.  Typically the process ID will	be  recorded  by
	    capturing the value of the variable $! immediately after the process
	    has been started.  There is a limit on the number of process IDs re-
	    membered by the shell; this is given by the value of the system con-
	    figuration	parameter  CHILD_MAX.  When this limit is reached, older
	    process IDs are discarded, least recently started processes first.

	    Note there is no protection against the process ID wrapping, i.e. if
	    the wait is not executed soon enough there is a chance  the  process
	    waited  for  is  the wrong one.  A conflict implies both process IDs
	    have been generated  by  the  shell,  as  other  processes	are  not
	    recorded,  and  that  the user is potentially interested in both, so
	    this problem is intrinsic to process IDs.

     whence [ -vcwfpamsS ] [ -x num ] name ...
	    For each name, indicate how it would be interpreted  if  used  as  a
	    command name.

	    If	name  is not an alias, built-in command, external command, shell
	    function, hashed command, or a reserved word, the exit status  shall
	    be non-zero, and -- if -v, -c, or -w was passed -- a message will be
	    written  to  standard  output.  (This is different from other shells
	    that write that message to standard error.)

	    whence is most useful when name is only the last path component of a
	    command, i.e. does not include a `/'; in particular, pattern  match-
	    ing only succeeds if just the non-directory component of the command
	    is passed.

	    -v	   Produce a more verbose report.

	    -c	   Print  the  results	in a csh-like format.  This takes prece-
		   dence over -v.

	    -w	   For each name, print `name: word' where word is one of alias,
		   builtin, command, function, hashed, reserved or none, accord-
		   ing as name corresponds to an alias, a built-in  command,  an
		   external  command,  a  shell function, a command defined with
		   the hash builtin, a reserved  word,	or  is	not  recognised.
		   This takes precedence over -v and -c.

	    -f	   Causes  the	contents  of  a  shell function to be displayed,
		   which would otherwise not happen  unless  the  -c  flag  were
		   used.

	    -p	   Do  a  path	search for name even if it is an alias, reserved
		   word, shell function or builtin.

	    -a	   Do a search for all occurrences of name throughout  the  com-
		   mand  path.	 Normally  only the first occurrence is printed.
		   When combined with -m, only names appearing	in  the  command
		   hash  table	are searched, but all occurrences of those names
		   are printed.

	    -m	   The arguments  are  taken  as  patterns  (pattern  characters
		   should  be quoted), and the information is displayed for each
		   entry in the command hash table matching one  of  these  pat-
		   terns.   The hash table is first refilled, in case of changes
		   to PATH.

	    -s	   If a pathname contains symlinks, print the symlink-free path-
		   name as well.

	    -S	   As -s, but if the pathname had to be  resolved  by  following
		   multiple  symlinks,	the intermediate steps are printed, too.
		   The symlink resolved at each step might be  anywhere  in  the
		   path.

	    -x num
		   Expand  tabs when outputting shell functions using the -c op-
		   tion.  This has the same effect as the -x option to the func-
		   tions builtin.

     where [ -wpmsS ] [ -x num ] name ...
	    Equivalent to whence -ca.

     which [ -wpamsS ] [ -x num ] name ...
	    Equivalent to whence -c.

     zcompile [ -U ] [ -z | -k ] [ -R | -M ] file [ name ... ]
     zcompile -ca [ -m ] [ -R | -M ] file [ name ... ]
     zcompile -t file [ name ... ]
	    This builtin command can be used to compile  functions  or	scripts,
	    storing the compiled form in a file, and to examine files containing
	    the  compiled form.  This allows faster autoloading of functions and
	    sourcing of scripts by avoiding parsing of the text when  the  files
	    are read.

	    The first form (without the -c, -a or -t options) creates a compiled
	    file.   If	only the file argument is given, the output file has the
	    name `file.zwc' and will be placed in  the	same  directory  as  the
	    file.   The  shell will load the compiled file instead of the normal
	    function file when the function is autoloaded; see the section  `Au-
	    toloading  Functions'  in  zshmisc(1)  for	a description of how au-
	    toloaded functions are searched.  The extension .zwc stands for `zsh
	    word code'.

	    If there is at least one name argument, all the named files are com-
	    piled into the output file given as the  first  argument.	If  file
	    does  not  end  in	.zwc,  this extension is automatically appended.
	    Files containing multiple compiled	functions  are	called	`digest'
	    files,  and  are  intended to be used as elements of the FPATH/fpath
	    special array.

	    The second form, with the -c or -a options, writes the compiled def-
	    initions for all the named functions into file.  For -c,  the  names
	    must  be  functions currently defined in the shell, not those marked
	    for autoloading.  Undefined functions that are marked for  autoload-
	    ing  may  be written by using the -a option, in which case the fpath
	    is searched and the contents of the definition files for those func-
	    tions, if found, are compiled into file.  If  both	-c  and  -a  are
	    given,  names of both defined functions and functions marked for au-
	    toloading may be given.  In either	case,  the  functions  in  files
	    written  with  the	-c  or	-a  option  will be autoloaded as if the
	    KSH_AUTOLOAD option were unset.

	    The reason for handling loaded  and  not-yet-loaded  functions  with
	    different  options is that some definition files for autoloading de-
	    fine multiple functions, including the function with the  same  name
	    as the file, and, at the end, call that function.  In such cases the
	    output  of	`zcompile  -c' does not include the additional functions
	    defined in the file, and any other initialization code in  the  file
	    is lost.  Using `zcompile -a' captures all this extra information.

	    If	the  -m  option is combined with -c or -a, the names are used as
	    patterns and all functions whose names match one of  these	patterns
	    will  be  written. If no name is given, the definitions of all func-
	    tions currently defined or marked as autoloaded will be written.

	    Note the second form cannot be used for compiling functions that in-
	    clude redirections as part of the definition rather than within  the
	    body of the function; for example

		   fn1() { { ... } >~/logfile }

	    can be compiled but

		   fn1() { ... } >~/logfile

	    cannot.  It is possible to use the first form of zcompile to compile
	    autoloadable functions that include the full function definition in-
	    stead of just the body of the function.

	    The  third	form,  with the -t option, examines an existing compiled
	    file.  Without further arguments, the names of  the  original  files
	    compiled  into  it	are  listed.  The first line of output shows the
	    version of the shell which compiled the file and how the  file  will
	    be	used (i.e. by reading it directly or by mapping it into memory).
	    With arguments, nothing is output and the return status  is  set  to
	    zero  if  definitions for all names were found in the compiled file,
	    and non-zero if the definition for at least one name was not found.

	    Other options:

	    -U	   Aliases are not expanded when compiling the named files.

	    -R	   When the compiled file is read, its contents are copied  into
		   the shell's memory, rather than memory-mapped (see -M).  This
		   happens  automatically  on systems that do not support memory
		   mapping.

		   When compiling scripts instead of autoloadable functions,  it
		   is  often  desirable  to use this option; otherwise the whole
		   file, including the code to define functions which  have  al-
		   ready  been defined, will remain mapped, consequently wasting
		   memory.

	    -M	   The compiled file is mapped	into  the  shell's  memory  when
		   read.  This	is done in such a way that multiple instances of
		   the shell running on the same host  will  share  this  mapped
		   file.   If  neither	-R nor -M is given, the zcompile builtin
		   decides what to do based on the size of the compiled file.

	    -k
	    -z	   These options are used when the compiled file contains  func-
		   tions  which  are to be autoloaded. If -z is given, the func-
		   tion will be autoloaded as if the KSH_AUTOLOAD option is  not
		   set, even if it is set at the time the compiled file is read,
		   while  if  the -k is given, the function will be loaded as if
		   KSH_AUTOLOAD is set.  These options also take precedence over
		   any -k or -z options specified to the  autoload  builtin.  If
		   neither  of	these  options	is  given,  the function will be
		   loaded as determined by the setting of the  KSH_AUTOLOAD  op-
		   tion at the time the compiled file is read.

		   These  options may also appear as many times as necessary be-
		   tween the listed names to specify the loading  style  of  all
		   following functions, up to the next -k or -z.

		   The created file always contains two versions of the compiled
		   format,  one for big-endian machines and one for small-endian
		   machines.  The upshot of this is that the  compiled	file  is
		   machine  independent  and  if  it is read or mapped, only one
		   half of the file is actually used (and mapped).

     zformat
	    See the section `The zsh/zutil Module' in zshmodules(1).

     zftp   See the section `The zsh/zftp Module' in zshmodules(1).

     zle    See the section `Zle Builtins' in zshzle(1).

     zmodload [ -dL ] [ -s ] [ ... ]
     zmodload -F [ -alLme -P param ] module [ [+-]feature ... ]
     zmodload -e [ -A ] [ ... ]
     zmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ...
     zmodload -u [ -abcdpf [ -I ] ] [ -iL ] ...
     zmodload -A [ -L ] [ modalias[=module] ... ]
     zmodload -R modalias ...
	    Performs operations relating to zsh's loadable modules.  Loading  of
	    modules  while  the  shell	is  running (`dynamical loading') is not
	    available on all operating systems, or on  all  installations  on  a
	    particular operating system, although the zmodload command itself is
	    always  available  and  can be used to manipulate modules built into
	    versions of the shell executable without dynamical loading.

	    Without arguments the names of all currently loaded  binary  modules
	    are  printed.  The -L option causes this list to be in the form of a
	    series of zmodload commands.  Forms with arguments are:

	    zmodload [ -is ] name ...
	    zmodload -u [ -i ] name ...
		   In the simplest case, zmodload loads a  binary  module.   The
		   module must be in a file with a name consisting of the speci-
		   fied name followed by a standard suffix, usually `.so' (`.sl'
		   on  HPUX).	If the module to be loaded is already loaded the
		   duplicate module is ignored.  If zmodload detects  an  incon-
		   sistency,  such  as an invalid module name or circular depen-
		   dency list, the current code block  is  aborted.   If  it  is
		   available,  the module is loaded if necessary, while if it is
		   not available, non-zero status is silently returned.  The op-
		   tion -i is accepted for compatibility but has no effect.

		   The named module is searched for in the same  way  a  command
		   is,	using  $module_path instead of $path.  However, the path
		   search is performed even when the module name contains a `/',
		   which it usually does.  There is no way to prevent  the  path
		   search.

		   If  the  module supports features (see below), zmodload tries
		   to enable all features when loading a module.  If the  module
		   was	successfully  loaded  but  not all features could be en-
		   abled, zmodload returns status 2.

		   If the option -s is given, no error is printed if the  module
		   was	not  available (though other errors indicating a problem
		   with the module are printed).  The return status indicates if
		   the module was loaded.  This is  appropriate  if  the  caller
		   considers the module optional.

		   With  -u,  zmodload	unloads  modules.  The same name must be
		   given that was given when the module was loaded,  but  it  is
		   not	necessary  for	the  module to exist in the file system.
		   The -i option suppresses the error if the module  is  already
		   unloaded (or was never loaded).

		   Each  module  has  a boot and a cleanup function.  The module
		   will not be loaded if its boot function fails.   Similarly  a
		   module can only be unloaded if its cleanup function runs suc-
		   cessfully.

	    zmodload -F [ -almLe -P param ] module [ [+-]feature ... ]
		   zmodload  -F  allows more selective control over the features
		   provided by modules.  With no options apart from -F, the mod-
		   ule named module is loaded, if it was not already loaded, and
		   the list of features is set to the  required  state.   If  no
		   features  are  specified, the module is loaded, if it was not
		   already loaded, but the state of features is unchanged.  Each
		   feature may be preceded by a + to turn the feature on,  or  -
		   to  turn  it  off;  the  + is assumed if neither character is
		   present.  Any feature not explicitly mentioned is left in its
		   current state; if the module was not previously  loaded  this
		   means  any  such  features  will remain disabled.  The return
		   status is zero if all features were	set,  1  if  the  module
		   failed  to load, and 2 if some features could not be set (for
		   example, a parameter couldn't be added because  there  was  a
		   different  parameter  of  the  same	name) but the module was
		   loaded.

		   The standard features are  builtins,  conditions,  parameters
		   and	math  functions; these are indicated by the prefix `b:',
		   `c:' (`C:' for an infix condition), `p:'  and  `f:',  respec-
		   tively,  followed  by the name that the corresponding feature
		   would have in the shell.  For example, `b:strftime' indicates
		   a builtin named strftime and p:EPOCHSECONDS indicates a para-
		   meter named EPOCHSECONDS.  The module may provide other (`ab-
		   stract') features of its own as indicated by  its  documenta-
		   tion; these have no prefix.

		   With  -l  or  -L, features provided by the module are listed.
		   With -l alone, a list of features together with their  states
		   is shown, one feature per line.  With -L alone, a zmodload -F
		   command that would cause enabled features of the module to be
		   turned  on  is  shown.   With -lL, a zmodload -F command that
		   would cause all the features to be set to their current state
		   is shown.  If one of these combinations is given with the op-
		   tion -P param then the parameter param is set to an array  of
		   features, either features together with their state or (if -L
		   alone is given) enabled features.

		   With  the  option  -L  the module name may be omitted; then a
		   list of all enabled features for all modules  providing  fea-
		   tures  is printed in the form of zmodload -F commands.  If -l
		   is also given, the state of both enabled  and  disabled  fea-
		   tures is output in that form.

		   A  set of features may be provided together with -l or -L and
		   a module name; in that case only the state of those	features
		   is  considered.   Each  feature may be preceded by + or - but
		   the character has no effect.  If no set of features	is  pro-
		   vided, all features are considered.

		   With  -e,  the command first tests that the module is loaded;
		   if it is not, status 1 is returned.	If the module is loaded,
		   the list of features given as an argument is  examined.   Any
		   feature  given  with no prefix is simply tested to see if the
		   module provides it; any feature given with a prefix + or - is
		   tested to see if is provided and in the given state.  If  the
		   tests  on  all  features in the list succeed, status 0 is re-
		   turned, else status 1.

		   With -m, each entry in the given list of features is taken as
		   a pattern to be matched against the list of features provided
		   by the module.  An initial + or - must be  given  explicitly.
		   This may not be combined with the -a option as autoloads must
		   be specified explicitly.

		   With  -a,  the  given list of features is marked for autoload
		   from the specified module, which may not yet be  loaded.   An
		   optional  +	may appear before the feature name.  If the fea-
		   ture is prefixed with -, any existing  autoload  is	removed.
		   The	options  -l  and  -L may be used to list autoloads.  Au-
		   toloading is specific to individual features; when the module
		   is loaded only the requested feature  is  enabled.	Autoload
		   requests are preserved if the module is subsequently unloaded
		   until  an  explicit `zmodload -Fa module -feature' is issued.
		   It is not an error to request an autoload for a feature of  a
		   module that is already loaded.

		   When  the  module  is loaded each autoload is checked against
		   the features actually provided by the module; if the  feature
		   is  not  provided the autoload request is deleted.  A warning
		   message is output; if the module is being loaded to provide a
		   different feature, and that autoload is successful, there  is
		   no  effect on the status of the current command.  If the mod-
		   ule is already loaded at the time when zmodload -Fa	is  run,
		   an error message is printed and status 1 returned.

		   zmodload  -Fa  can be used with the -l, -L, -e and -P options
		   for listing and testing the existence  of  autoloadable  fea-
		   tures.  In this case -l is ignored if -L is specified.  zmod-
		   load  -FaL  with  no module name lists autoloads for all mod-
		   ules.

		   Note that only standard features as described  above  can  be
		   autoloaded;	other  features  require the module to be loaded
		   before enabling.

	    zmodload -d [ -L ] [ name ]
	    zmodload -d name dep ...
	    zmodload -ud name [ dep ... ]
		   The -d option can be used  to  specify  module  dependencies.
		   The modules named in the second and subsequent arguments will
		   be loaded before the module named in the first argument.

		   With  -d  and  one argument, all dependencies for that module
		   are listed.	With -d and no arguments, all  module  dependen-
		   cies  are  listed.	This  listing  is  by default in a Make-
		   file-like format.  The -L option changes  this  format  to  a
		   list of zmodload -d commands.

		   If  -d  and	-u  are both used, dependencies are removed.  If
		   only one argument is given, all dependencies for that  module
		   are removed.

	    zmodload -ab [ -L ]
	    zmodload -ab [ -i ] name [ builtin ... ]
	    zmodload -ub [ -i ] builtin ...
		   The	-ab  option defines autoloaded builtins.  It defines the
		   specified builtins.	When any of those  builtins  is  called,
		   the	module specified in the first argument is loaded and all
		   its features are enabled (for selective control  of	features
		   use	`zmodload  -F -a' as described above).	If only the name
		   is given, one builtin is defined, with the same name  as  the
		   module.   -i  suppresses  the error if the builtin is already
		   defined or autoloaded, but not if another builtin of the same
		   name is already defined.

		   With -ab  and  no  arguments,  all  autoloaded  builtins  are
		   listed,  with  the module name (if different) shown in paren-
		   theses after the builtin name.  The -L  option  changes  this
		   format to a list of zmodload -a commands.

		   If  -b  is  used  together  with  the  -u  option, it removes
		   builtins previously defined with -ab.  This is only	possible
		   if the builtin is not yet loaded.  -i suppresses the error if
		   the builtin is already removed (or never existed).

		   Autoload  requests are retained if the module is subsequently
		   unloaded until an explicit `zmodload -ub builtin' is issued.

	    zmodload -ac [ -IL ]
	    zmodload -ac [ -iI ] name [ cond ... ]
	    zmodload -uc [ -iI ] cond ...
		   The -ac option is used to define autoloaded condition  codes.
		   The	cond strings give the names of the conditions defined by
		   the module. The optional -I option is used  to  define  infix
		   condition  names.  Without this option prefix condition names
		   are defined.

		   If given no condition names, all defined names are listed (as
		   a series of zmodload commands if the -L option is given).

		   The -uc option removes definitions for autoloaded conditions.

	    zmodload -ap [ -L ]
	    zmodload -ap [ -i ] name [ parameter ... ]
	    zmodload -up [ -i ] parameter ...
		   The -p option is like the -b and -c options, but makes  zmod-
		   load work on autoloaded parameters instead.

	    zmodload -af [ -L ]
	    zmodload -af [ -i ] name [ function ... ]
	    zmodload -uf [ -i ] function ...
		   The	-f  option is like the -b, -p, and -c options, but makes
		   zmodload work on autoloaded math functions instead.

	    zmodload -a [ -L ]
	    zmodload -a [ -i ] name [ builtin ... ]
	    zmodload -ua [ -i ] builtin ...
		   Equivalent to -ab and -ub.

	    zmodload -e [ -A ] [ string ... ]
		   The -e option without arguments lists all loaded modules;  if
		   the	-A option is also given, module aliases corresponding to
		   loaded modules are also shown.  If  arguments  are  provided,
		   nothing  is	printed; the return status is set to zero if all
		   strings given as arguments are names of loaded modules and to
		   one if at least on string is not the name of a loaded module.
		   This can be used to test for the availability of  things  im-
		   plemented by modules.  In this case, any aliases are automat-
		   ically resolved and the -A flag is not used.

	    zmodload -A [ -L ] [ modalias[=module] ... ]
		   For each argument, if both modalias and module are given, de-
		   fine  modalias  to be an alias for the module module.  If the
		   module modalias is ever subsequently requested, either via  a
		   call  to  zmodload  or  implicitly, the shell will attempt to
		   load module instead.  If module is not given, show the defin-
		   ition of modalias.  If no arguments are given, list	all  de-
		   fined  module aliases.  When listing, if the -L flag was also
		   given, list the definition as a zmodload command to	recreate
		   the alias.

		   The	existence  of aliases for modules is completely indepen-
		   dent of whether the name resolved is  actually  loaded  as  a
		   module:  while  the	alias  exists, loading and unloading the
		   module under any alias has exactly the same effect  as  using
		   the resolved name, and does not affect the connection between
		   the	alias  and the resolved name which can be removed either
		   by zmodload -R or by redefining the alias.  Chains of aliases
		   (i.e. where the first resolved name is itself an  alias)  are
		   valid so long as these are not circular.  As the aliases take
		   the	same format as module names, they may include path sepa-
		   rators:  in this case, there is no requirement for  any  part
		   of  the  path  named  to  exist as the alias will be resolved
		   first.  For example, `any/old/alias' is always a valid alias.

		   Dependencies added to aliased modules are actually  added  to
		   the	resolved  module;  these remain if the alias is removed.
		   It is valid to create an alias whose name is one of the stan-
		   dard shell modules and which resolves to a different  module.
		   However,  if a module has dependencies, it will not be possi-
		   ble to use the module name as an alias as the module will al-
		   ready be marked as a loadable module in its own right.

		   Apart from the above, aliases can be  used  in  the	zmodload
		   command anywhere module names are required.	However, aliases
		   will  not  be  shown  in  lists of loaded modules with a bare
		   `zmodload'.

	    zmodload -R modalias ...
		   For each modalias argument that was previously defined  as  a
		   module  alias  via zmodload -A, delete the alias.  If any was
		   not defined, an error is caused and the remainder of the line
		   is ignored.

	    Note that zsh makes no distinction between modules that were  linked
	    into  the  shell  and  modules  that are loaded dynamically. In both
	    cases this builtin command has to be  used	to  make  available  the
	    builtins  and  other things defined by modules (unless the module is
	    autoloaded on these definitions). This is true even for systems that
	    don't support dynamic loading of modules.

     zparseopts
	    See the section `The zsh/zutil Module' in zshmodules(1).

     zprof  See the section `The zsh/zprof Module' in zshmodules(1).

     zpty   See the section `The zsh/zpty Module' in zshmodules(1).

     zregexparse
	    See the section `The zsh/zutil Module' in zshmodules(1).

     zsocket
	    See the section `The zsh/net/socket Module' in zshmodules(1).

     zstyle
	    See the section `The zsh/zutil Module' in zshmodules(1).

     ztcp   See the section `The zsh/net/tcp Module' in zshmodules(1).

zsh 5.9.1			  May 31, 2026			  ZSHBUILTINS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zshbuiltins&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help