{
    "content": [
        {
            "type": "text",
            "text": "# zshbuiltins (info)\n\n## NAME\n\nzshbuiltins - zsh built-in commands\n\n## Sections\n\n- **NAME**\n- **SHELL BUILTIN COMMANDS**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "zshbuiltins",
        "section": "",
        "mode": "info",
        "summary": "zshbuiltins - zsh built-in commands",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SHELL BUILTIN COMMANDS",
                "lines": 2739,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "zshbuiltins - zsh built-in commands\n",
                "subsections": []
            },
            "SHELL BUILTIN COMMANDS": {
                "content": "Some shell builtin commands take options as described in individual en-\ntries; these are often referred to in the  list  below  as  `flags'  to\navoid  confusion  with  shell options, which may also have an effect on\nthe behaviour of builtin commands.  In this introductory section,  `op-\ntion'  always  has the meaning of an option to a command that should be\nfamiliar to most command line users.\n\nTypically, options are single letters preceded by a  hyphen  (-).   Op-\ntions  that take an argument accept it either immediately following the\noption letter or after white space, for example `print -C3  {1..9}'  or\n`print  -C  3 {1..9}' are equivalent.  Arguments to options are not the\nsame as arguments to the command; the documentation indicates which  is\nwhich.   Options that do not take an argument may be combined in a sin-\ngle word, for example `print -rca -- *' and `print -r -c -a --  *'  are\nequivalent.\n\nSome  shell  builtin commands also take options that begin with `+' in-\nstead of `-'.  The list below makes clear which commands these are.\n\nOptions (together with their individual arguments, if any) must  appear\nin  a  group before any non-option arguments; once the first non-option\nargument has been found, option processing is terminated.\n\nAll builtin commands other than `echo' and precommand  modifiers,  even\nthose that have no options, can be given the argument `--' to terminate\noption processing.  This indicates that the following words are non-op-\ntion  arguments,  but  is  otherwise  ignored.  This is useful in cases\nwhere arguments to the command may begin with `-'.  For historical rea-\nsons,  most builtin commands (including `echo') also recognize a single\n`-' in a separate word for this purpose; note that this is  less  stan-\ndard and use of `--' is recommended.\n\n- simple command\nSee the section `Precommand Modifiers' in zshmisc(1).\n\n. file [ arg ... ]\nRead  commands  from  file and execute them in the current shell\nenvironment.\n\nIf file does not contain a slash, or if PATHDIRS  is  set,  the\nshell  looks  in  the  components of $path to find the directory\ncontaining file.  Files in the current directory  are  not  read\nunless  `.'  appears  somewhere  in  $path.   If  a  file  named\n`file.zwc' is found, is newer than file,  and  is  the  compiled\nform  (created with the zcompile builtin) of file, then commands\nare read from that file instead of file.\n\nIf any arguments arg are given, they become the  positional  pa-\nrameters;  the  old  positional parameters are restored when the\nfile is done executing.  However, if no arguments are given, the\npositional  parameters  remain those of the calling context, and\nno restoring is done.\n\nIf file was not found the return status  is  127;  if  file  was\nfound  but  contained  a  syntax error the return status is 126;\nelse the return status is the exit status of  the  last  command\nexecuted.\n\n: [ arg ... ]\nThis  command  does nothing, although normal argument expansions\nis performed which may have effects on shell parameters.  A zero\nexit status is returned.\n\nalias [ {+|-}gmrsL ] [ name[=value] ... ]\nFor  each  name with a corresponding value, define an alias with\nthat value.  A trailing space in value causes the next  word  to\nbe  checked for alias expansion.  If the -g flag is present, de-\nfine a global alias; global aliases are expanded even if they do\nnot occur in command position.\n\nIf the -s flag is present, define a suffix alias: if the command\nword on a command line is in the form `text.name', where text is\nany  non-empty  string,  it  is  replaced  by  the  text  `value\ntext.name'.  Note that name is treated as a literal string,  not\na  pattern.   A  trailing  space in value is not special in this\ncase.  For example,\n\nalias -s ps='gv --'\n\nwill cause the command `*.ps' to be expanded to  `gv  --  *.ps'.\nAs  alias  expansion  is  carried out earlier than globbing, the\n`*.ps' will then be expanded.  Suffix aliases constitute a  dif-\nferent name space from other aliases (so in the above example it\nis still possible to create an alias for the command ps) and the\ntwo sets are never listed together.\n\nFor  each  name  with no value, print the value of name, if any.\nWith no arguments, print all  currently  defined  aliases  other\nthan  suffix aliases.  If the -m flag is given the arguments are\ntaken as patterns (they should be quoted to preserve  them  from\nbeing  interpreted  as  glob patterns), and the aliases matching\nthese patterns are printed.  When printing aliases  and  one  of\nthe  -g,  -r  or  -s  flags is present, restrict the printing to\nglobal, regular or suffix aliases, respectively; a regular alias\nis one which is neither a global nor a suffix alias.   Using `+'\ninstead of `-', or ending the option list  with  a  single  `+',\nprevents the values of the aliases from being printed.\n\nIf  the  -L  flag  is present, then print each alias in a manner\nsuitable for putting in a startup script.  The  exit  status  is\nnonzero  if  a  name (with no value) is given for which no alias\nhas been defined.\n\nFor more on aliases, include common problems,  see  the  section\nALIASING in zshmisc(1).\n\nautoload [ {+|-}RTUXdkmrtWz ] [ -w ] [ name ... ]\nSee  the  section `Autoloading Functions' in zshmisc(1) for full\ndetails.  The fpath parameter will be searched to find the func-\ntion definition when the function is first referenced.\n\nIf name consists of an absolute path, the function is defined to\nload from the file given (searching as usual for dump  files  in\nthe  given  location).  The name of the function is the basename\n(non-directory part) of the file.  It is normally  an  error  if\nthe function is not found in the given location; however, if the\noption -d is given,  searching  for  the  function  defaults  to\n$fpath.  If a function is loaded by absolute path, any functions\nloaded from it that are marked for autoload without an  absolute\npath  have  the  load  path  of  the parent function temporarily\nprepended to $fpath.\n\nIf the option -r or -R is given, the function  is  searched  for\nimmediately and the location is recorded internally for use when\nthe function is executed; a relative path is expanded using  the\nvalue  of  $PWD.  This protects against a change to $fpath after\nthe call to autoload.  With -r, if the function is not found, it\nis  silently  left unresolved until execution; with -R, an error\nmessage is printed and command  processing  aborted  immediately\nthe  search  fails,  i.e. at the autoload command rather than at\nfunction execution..\n\nThe flag -X may be used only inside a shell function.  It causes\nthe calling function to be marked for autoloading and then imme-\ndiately loaded and executed, with the  current  array  of  posi-\ntional parameters as arguments.  This replaces the previous def-\ninition of the function.  If no function definition is found, an\nerror  is  printed and the function remains undefined and marked\nfor autoloading.  If an argument is given, it is used as  a  di-\nrectory  (i.e.  it does not include the name of the function) in\nwhich the function is to be found; this may be combined with the\n-d  option  to allow the function search to default to $fpath if\nit is not in the given location.\n\nThe flag +X attempts to load each name as  an  autoloaded  func-\ntion,  but  does  not execute it.  The exit status is zero (suc-\ncess) if the function was not previously defined and  a  defini-\ntion for it was found.  This does not replace any existing defi-\nnition of the function.  The exit status is nonzero (failure) if\nthe  function  was  already  defined  or  when no definition was\nfound.  In the latter case the function  remains  undefined  and\nmarked  for  autoloading.   If ksh-style autoloading is enabled,\nthe function created will contain the contents of the file  plus\na call to the function itself appended to it, thus giving normal\nksh autoloading behaviour on the first call to the function.  If\nthe  -m flag is also given each name is treated as a pattern and\nall functions already marked for autoload that match the pattern\nare loaded.\n\nWith  the  -t  flag, turn on execution tracing; with -T, turn on\nexecution tracing only for the current function, turning it  off\non  entry  to any called functions that do not also have tracing\nenabled.\n\nWith the -U flag, alias expansion is suppressed when  the  func-\ntion is loaded.\n\nWith the -w flag, the names are taken as names of files compiled\nwith the zcompile builtin, and all functions defined in them are\nmarked for autoloading.\n\nThe flags -z and -k mark the function to be autoloaded using the\nzsh or ksh style, as if the option KSHAUTOLOAD  were  unset  or\nwere  set,  respectively.  The flags override the setting of the\noption at the time the function is loaded.\n\nNote that the autoload command makes no attempt  to  ensure  the\nshell  options  set  during the loading or execution of the file\nhave any particular value.  For this, the emulate command can be\nused:\n\nemulate zsh -c 'autoload -Uz func'\n\narranges that when func is loaded the shell is in native zsh em-\nulation, and this emulation is also applied when func is run.\n\nSome of the functions of autoload are also provided by functions\n-u  or functions -U, but autoload is a more comprehensive inter-\nface.\n\nbg [ job ... ]\njob ... &\nPut each specified job in the background, or the current job  if\nnone is specified.\n\nbindkey\nSee the section `Zle Builtins' in zshzle(1).\n\nbreak [ n ]\nExit from an enclosing for, while, until, select or repeat loop.\nIf an arithmetic expression n is specified, then break n  levels\ninstead of just one.\n\nbuiltin name [ args ... ]\nExecutes the builtin name, with the given args.\n\nbye    Same as exit.\n\ncap    See the section `The zsh/cap Module' in zshmodules(1).\n\ncd [ -qsLP ] [ arg ]\ncd [ -qsLP ] old new\ncd [ -qsLP ] {+|-}n\nChange  the  current  directory.   In the first form, change the\ncurrent directory to arg, or to the value of $HOME if arg is not\nspecified.  If arg is `-', change to the previous directory.\n\nOtherwise,  if arg begins with a slash, attempt to change to the\ndirectory given by arg.\n\nIf arg does not begin with a slash,  the  behaviour  depends  on\nwhether the current directory `.' occurs in the list of directo-\nries contained in the shell parameter cdpath.  If it  does  not,\nfirst  attempt  to change to the directory arg under the current\ndirectory, and if that fails but cdpath is set and  contains  at\nleast  one  element attempt to change to the directory arg under\neach component of cdpath in turn until successful.  If  `.'  oc-\ncurs  in  cdpath,  then  cdpath is searched strictly in order so\nthat `.' is only tried at the appropriate point.\n\nThe order of testing cdpath is modified if the  option  POSIXCD\nis set, as described in the documentation for the option.\n\nIf  no  directory is found, the option CDABLEVARS is set, and a\nparameter named arg exists whose  value  begins  with  a  slash,\ntreat  its  value as the directory.  In that case, the parameter\nis added to the named directory hash table.\n\nThe second form of cd substitutes the string new for the  string\nold in the name of the current directory, and tries to change to\nthis new directory.\n\nThe third form of cd extracts an entry from the directory stack,\nand  changes  to  that  directory.  An argument of the form `+n'\nidentifies a stack entry by counting from the left of  the  list\nshown  by  the dirs command, starting with zero.  An argument of\nthe form `-n' counts from the right.  If the PUSHDMINUS  option\nis set, the meanings of `+' and `-' in this context are swapped.\nIf the POSIXCD option is set, this form of cd is not recognised\nand will be interpreted as the first form.\n\nIf  the  -q (quiet) option is specified, the hook function chpwd\nand the functions in the array chpwdfunctions are  not  called.\nThis  is  useful for calls to cd that do not change the environ-\nment seen by an interactive user.\n\nIf the -s option is specified, cd refuses to change the  current\ndirectory  if  the  given pathname contains symlinks.  If the -P\noption is given or the CHASELINKS option is set, symbolic links\nare  resolved  to  their true values.  If the -L option is given\nsymbolic links are retained in the directory (and not  resolved)\nregardless of the state of the CHASELINKS option.\n\nchdir  Same as cd.\n\nclone  See the section `The zsh/clone Module' in zshmodules(1).\n\ncommand [ -pvV ] simple command\nThe  simple command argument is taken as an external command in-\nstead  of  a  function  or  builtin  and  is  executed.  If  the\nPOSIXBUILTINS option is set, builtins will also be executed but\ncertain special properties of them are suppressed. The  -p  flag\ncauses  a  default path to be searched instead of that in $path.\nWith the -v flag, command is similar to whence and with  -V,  it\nis equivalent to whence -v.\n\nSee also the section `Precommand Modifiers' in zshmisc(1).\n\ncomparguments\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncompcall\nSee the section `The zsh/compctl Module' in zshmodules(1).\n\ncompctl\nSee the section `The zsh/compctl Module' in zshmodules(1).\n\ncompdescribe\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncompfiles\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncompgroups\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncompquote\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncomptags\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncomptry\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncompvalues\nSee the section `The zsh/computil Module' in zshmodules(1).\n\ncontinue [ n ]\nResume  the  next  iteration of the enclosing for, while, until,\nselect or repeat loop. If an arithmetic expression n  is  speci-\nfied,  break  out  of  n-1 loops and resume at the nth enclosing\nloop.\n\ndeclare\nSame as typeset.\n\ndirs [ -c ] [ arg ... ]\ndirs [ -lpv ]\nWith no arguments, print the contents of  the  directory  stack.\nDirectories  are added to this stack with the pushd command, and\nremoved with the cd or popd commands.  If arguments  are  speci-\nfied,  load  them  onto  the directory stack, replacing anything\nthat was there, and push the current directory onto the stack.\n\n-c     clear the directory stack.\n\n-l     print directory names in full instead of using of using ~\nexpressions  (see Dynamic and Static named directories in\nzshexpn(1)).\n\n-p     print directory entries one per line.\n\n-v     number the directories in the stack when printing.\n\ndisable [ -afmprs ] name ...\nTemporarily disable the named hash table elements  or  patterns.\nThe  default is to disable builtin commands.  This allows you to\nuse an external command with the same name as a builtin command.\nThe  -a  option  causes  disable  to  act  on  regular or global\naliases.  The -s option causes disable to act on suffix aliases.\nThe  -f option causes disable to act on shell functions.  The -r\noptions causes disable to act on reserved words.  Without  argu-\nments  all  disabled  hash table elements from the corresponding\nhash table are printed.  With the  -m  flag  the  arguments  are\ntaken  as  patterns (which should be quoted to prevent them from\nundergoing filename expansion), and all hash table elements from\nthe  corresponding  hash  table matching these patterns are dis-\nabled.  Disabled objects can be enabled with the enable command.\n\nWith the option -p, name ... refer to elements  of  the  shell's\npattern  syntax  as  described  in the section `Filename Genera-\ntion'.  Certain elements can be disabled  separately,  as  given\nbelow.\n\nNote  that  patterns not allowed by the current settings for the\noptions EXTENDEDGLOB, KSHGLOB and SHGLOB are  never  enabled,\nregardless  of  the setting here.  For example, if EXTENDEDGLOB\nis not active, the pattern ^ is ineffective even if `disable  -p\n\"^\"'  has  not been issued.  The list below indicates any option\nsettings that restrict the use of the  pattern.   It  should  be\nnoted  that  setting SHGLOB has a wider effect than merely dis-\nabling patterns as certain expressions, in particular those  in-\nvolving parentheses, are parsed differently.\n\nThe  following  patterns  may  be disabled; all the strings need\nquoting on the command line to prevent them  from  being  inter-\npreted  immediately as patterns and the patterns are shown below\nin single quotes as a reminder.\n\n'?'    The pattern character ?  wherever  it  occurs,  including\nwhen preceding a parenthesis with KSHGLOB.\n\n'*'    The pattern character * wherever it occurs, including re-\ncursive globbing and when preceding  a  parenthesis  with\nKSHGLOB.\n\n'['    Character classes.\n\n'<' (NOSHGLOB)\nNumeric ranges.\n\n'|' (NOSHGLOB)\nAlternation  in  grouped  patterns,  case  statements, or\nKSHGLOB parenthesised expressions.\n\n'(' (NOSHGLOB)\nGrouping using single parentheses.  Disabling  this  does\nnot  disable  the  use  of parentheses for KSHGLOB where\nthey are introduced by a special character, nor for  glob\nqualifiers  (use  `setopt  NOBAREGLOBQUAL'  to disable\nglob qualifiers that use parentheses only).\n\n'~' (EXTENDEDGLOB)\nExclusion in the form A~B.\n\n'^' (EXTENDEDGLOB)\nExclusion in the form A^B.\n\n'#' (EXTENDEDGLOB)\nThe pattern character # wherever it occurs, both for rep-\netition of a previous pattern and for indicating globbing\nflags.\n\n'?(' (KSHGLOB)\nThe grouping form ?(...).  Note this is also disabled  if\n'?' is disabled.\n\n'*(' (KSHGLOB)\nThe  grouping form *(...).  Note this is also disabled if\n'*' is disabled.\n\n'+(' (KSHGLOB)\nThe grouping form +(...).\n\n'!(' (KSHGLOB)\nThe grouping form !(...).\n\n'@(' (KSHGLOB)\nThe grouping form @(...).\n\ndisown [ job ... ]\njob ... &|\njob ... &!\nRemove the specified jobs from the job table; the shell will  no\nlonger  report their status, and will not complain if you try to\nexit an interactive shell with them running or stopped.   If  no\njob is specified, disown the current job.\n\nIf  the  jobs are currently stopped and the AUTOCONTINUE option\nis not set, a warning is printed  containing  information  about\nhow  to make them running after they have been disowned.  If one\nof the latter two forms is used, the jobs will automatically  be\nmade  running,  independent  of the setting of the AUTOCONTINUE\noption.\n\necho [ -neE ] [ arg ... ]\nWrite each arg on the standard output, with a  space  separating\neach one.  If the -n flag is not present, print a newline at the\nend.  echo recognizes the following escape sequences:\n\n\\a     bell character\n\\b     backspace\n\\c     suppress subsequent characters and final newline\n\\e     escape\n\\f     form feed\n\\n     linefeed (newline)\n\\r     carriage return\n\\t     horizontal tab\n\\v     vertical tab\n\\\\     backslash\n\\0NNN  character code in octal\n\\xNN   character code in hexadecimal\n\\uNNNN unicode character code in hexadecimal\n\\UNNNNNNNN\nunicode character code in hexadecimal\n\nThe -E flag, or the BSDECHO option,  can  be  used  to  disable\nthese escape sequences.  In the latter case, -e flag can be used\nto enable them.\n\nNote that for standards compliance a double dash does not termi-\nnate  option  processing; instead, it is printed directly.  How-\never, a single dash does terminate  option  processing,  so  the\nfirst  dash, possibly following options, is not printed, but ev-\nerything following it is printed as  an  argument.   The  single\ndash  behaviour is different from other shells.  For a more por-\ntable way of printing text, see printf, and for a more  control-\nlable way of printing text within zsh, see print.\n\nechotc See the section `The zsh/termcap Module' in zshmodules(1).\n\nechoti See the section `The zsh/terminfo Module' in zshmodules(1).\n\nemulate [ -lLR ] [ {zsh|sh|ksh|csh} [ flags ... ] ]\nWithout any argument print current emulation mode.\n\nWith single argument set up zsh options to emulate the specified\nshell as much as possible.  csh will never  be  fully  emulated.\nIf  the argument is not one of the shells listed above, zsh will\nbe used as a default; more precisely, the tests performed on the\nargument  are  the same as those used to determine the emulation\nat startup based on the shell name, see the section  COMPATIBIL-\nITY  in zsh(1) .  In addition to setting shell options, the com-\nmand also restores the pristine state of pattern enables, as  if\nall patterns had been enabled using enable -p.\n\nIf  the  emulate  command occurs inside a function that has been\nmarked for execution tracing with functions -t then  the  xtrace\noption  will  be turned on regardless of emulation mode or other\noptions.  Note that code executed inside the function by the  .,\nsource,  or  eval  commands  is not considered to be running di-\nrectly from the function, hence does not provoke this behaviour.\n\nIf the -R switch is given, all settable  options  are  reset  to\ntheir  default  value  corresponding  to the specified emulation\nmode, except for certain options describing the interactive  en-\nvironment;  otherwise, only those options likely to cause porta-\nbility problems in scripts and functions are altered.  If the -L\nswitch  is  given, the options LOCALOPTIONS, LOCALPATTERNS and\nLOCALTRAPS will be set as well, causing the effects of the emu-\nlate  command  and any setopt, disable -p or enable -p, and trap\ncommands to be local to the immediately surrounding shell  func-\ntion,  if any; normally these options are turned off in all emu-\nlation modes except ksh. The -L  switch  is  mutually  exclusive\nwith the use of -c in flags.\n\nIf  there  is  a single argument and the -l switch is given, the\noptions that would be set or unset (the  latter  indicated  with\nthe  prefix  `no') are listed.  -l can be combined with -L or -R\nand the list will be modified in the appropriate way.  Note  the\nlist  does not depend on the current setting of options, i.e. it\nincludes all options that may  in  principle  change,  not  just\nthose that would actually change.\n\nThe  flags  may be any of the invocation-time flags described in\nthe section INVOCATION in zsh(1), except that `-o EMACS' and `-o\nVI'  may not be used.  Flags such as `+r'/`+o RESTRICTED' may be\nprohibited in some circumstances.\n\nIf -c arg appears in flags, arg is evaluated while the requested\nemulation  is temporarily in effect.  In this case the emulation\nmode and all options are restored to their previous  values  be-\nfore emulate returns.  The -R switch may precede the name of the\nshell to emulate; note this has a meaning distinct from  includ-\ning -R in flags.\n\nUse  of -c enables `sticky' emulation mode for functions defined\nwithin the evaluated expression:  the emulation mode is  associ-\nated  thereafter with the function so that whenever the function\nis executed the emulation (respecting the -R switch, if present)\nand  all  options  are set (and pattern disables cleared) before\nentry to the function, and the state is restored after exit.  If\nthe  function  is called when the sticky emulation is already in\neffect, either within an `emulate shell -c' expression or within\nanother  function with the same sticky emulation, entry and exit\nfrom the function do not cause options to be altered (except due\nto  standard processing such as the LOCALOPTIONS option).  This\nalso applies to functions marked for autoload within the  sticky\nemulation; the appropriate set of options will be applied at the\npoint the function is loaded as well as when it is run.\n\nFor example:\n\nemulate sh -c 'fni() { setopt cshnullglob; }\nfno() { fni; }'\nfno\n\nThe two functions fni and fno are defined with sticky sh  emula-\ntion.  fno is then executed, causing options associated with em-\nulations to be set to their values in sh.  fno then  calls  fni;\nbecause  fni  is  also marked for sticky sh emulation, no option\nchanges take place on entry to or exit from it.  Hence  the  op-\ntion  cshnullglob, turned off by sh emulation, will be turned on\nwithin fni and remain on return to fno.  On exit from  fno,  the\nemulation  mode  and  all  options will be restored to the state\nthey were in before entry to the temporary emulation.\n\nThe documentation above is typically sufficient for the intended\npurpose  of  executing code designed for other shells in a suit-\nable environment.  More detailed rules follow.\n1.     The sticky emulation  environment  provided  by  `emulate\nshell  -c'  is  identical  to that provided by entry to a\nfunction marked for sticky emulation as a consequence  of\nbeing  defined  in such an environment.  Hence, for exam-\nple, the sticky emulation is  inherited  by  subfunctions\ndefined within functions with sticky emulation.\n2.     No change of options takes place on entry to or exit from\nfunctions that are not marked for sticky emulation, other\nthan  those that would normally take place, even if those\nfunctions are called within sticky emulation.\n3.     No special handling is provided for functions marked  for\nautoload nor for functions present in wordcode created by\nthe zcompile command.\n4.     The presence or absence of the -R switch to emulate  cor-\nresponds  to different sticky emulation modes, so for ex-\nample `emulate sh -c', `emulate -R sh  -c'  and  `emulate\ncsh -c' are treated as three distinct sticky emulations.\n5.     Difference  in  shell options supplied in addition to the\nbasic emulation also mean the sticky emulations are  dif-\nferent,  so for example `emulate zsh -c' and `emulate zsh\n-o cbases -c' are treated as distinct sticky emulations.\n\nenable [ -afmprs ] name ...\nEnable the named hash table elements, presumably  disabled  ear-\nlier  with  disable.  The default is to enable builtin commands.\nThe -a option causes enable to act on regular or global aliases.\nThe  -s  option  causes enable to act on suffix aliases.  The -f\noption causes enable to act on shell functions.  The  -r  option\ncauses  enable  to act on reserved words.  Without arguments all\nenabled hash table elements from the  corresponding  hash  table\nare  printed.   With the -m flag the arguments are taken as pat-\nterns (should be quoted) and all hash table  elements  from  the\ncorresponding  hash  table  matching these patterns are enabled.\nEnabled objects can be disabled with the  disable  builtin  com-\nmand.\n\nenable  -p  reenables  patterns  disabled with disable -p.  Note\nthat it does not override globbing options; for example, `enable\n-p  \"~\"' does not cause the pattern character ~ to be active un-\nless the EXTENDEDGLOB option is also set.  To enable all possi-\nble  patterns  (so  that  they may be individually disabled with\ndisable -p), use `setopt EXTENDEDGLOB KSHGLOB NOSHGLOB'.\n\neval [ arg ... ]\nRead the arguments as input to the shell and execute the result-\ning  command(s) in the current shell process.  The return status\nis the same as if the commands had been executed directly by the\nshell;  if  there  are no args or they contain no commands (i.e.\nare an empty string or whitespace) the return status is zero.\n\nexec [ -cl ] [ -a argv0 ] [ command [ arg ... ] ]\nReplace the current shell with command rather than forking.   If\ncommand  is  a  shell  builtin  command or a shell function, the\nshell executes it, and exits when the command is complete.\n\nWith -c clear the environment; with -l prepend - to the  argv[0]\nstring of the command executed (to simulate a login shell); with\n-a argv0 set the argv[0] string of the  command  executed.   See\nthe section `Precommand Modifiers' in zshmisc(1).\n\nIf  the  option  POSIXBUILTINS  is set, command is never inter-\npreted as a shell builtin command or shell function.  This means\nfurther precommand modifiers such as builtin and noglob are also\nnot interpreted within the shell.  Hence command is always found\nby searching the command path.\n\nIf  command  is omitted but any redirections are specified, then\nthe redirections will take effect in the current shell.\n\nexit [ n ]\nExit the shell with the exit status specified by  an  arithmetic\nexpression n; if none is specified, use the exit status from the\nlast command executed.  An EOF condition  will  also  cause  the\nshell to exit, unless the IGNOREEOF option is set.\n\nSee  notes at the end of the section JOBS in zshmisc(1) for some\npossibly unexpected interactions of the exit command with jobs.\n\nexport [ name[=value] ... ]\nThe specified names are marked for automatic export to the envi-\nronment  of subsequently executed commands.  Equivalent to type-\nset -gx.  If a parameter specified does not already exist, it is\ncreated in the global scope.\n\nfalse [ arg ... ]\nDo nothing and return an exit status of 1.\n\nfc [ -e ename ] [ -LI ] [ -m match ] [ old=new ... ] [ first [ last ] ]\nfc -l [ -LI ] [ -nrdfEiD ] [ -t timefmt ] [ -m match ]\n[ old=new ... ] [ first [ last ] ]\nfc -p [ -a ] [ filename [ histsize [ savehistsize ] ] ]\nfc -P\nfc -ARWI [ filename ]\nThe fc command controls the interactive history mechanism.  Note\nthat reading and writing of history options is only performed if\nthe  shell  is  interactive.  Usually this is detected automati-\ncally, but it can be forced by setting  the  interactive  option\nwhen starting the shell.\n\nThe  first  two  forms  of this command select a range of events\nfrom first to last from the history list.  The  arguments  first\nand  last  may be specified as a number or as a string.  A nega-\ntive number is used as an offset to the  current  history  event\nnumber.  A string specifies the most recent event beginning with\nthe given string.  All substitutions old=new, if any,  are  then\nperformed on the text of the events.\n\nIn addition to the number range,\n-I     restricts to only internal events (not from $HISTFILE)\n-L     restricts  to  only  local events (not from other shells,\nsee SHAREHISTORY in zshoptions(1) -- note that $HISTFILE\nis considered local when read at startup)\n-m     takes  the first argument as a pattern (should be quoted)\nand only the history events  matching  this  pattern  are\nconsidered\n\nIf first is not specified, it will be set to -1 (the most recent\nevent), or to -16 if the -l flag is given.  If last is not spec-\nified,  it  will  be  set  to  first, or to -1 if the -l flag is\ngiven.  However, if the current event has added entries  to  the\nhistory with `print -s' or `fc -R', then the default last for -l\nincludes all new history entries since the current event began.\n\nWhen the -l flag is given, the resulting events  are  listed  on\nstandard  output.   Otherwise the editor program specified by -e\nename is invoked on a file containing these history events.   If\n-e  is  not given, the value of the parameter FCEDIT is used; if\nthat is not set the value of the parameter EDITOR  is  used;  if\nthat  is  not  set  a builtin default, usually `vi' is used.  If\nename is `-', no editor is invoked.  When editing  is  complete,\nthe edited command is executed.\n\nThe  flag  -r  reverses  the order of the events and the flag -n\nsuppresses event numbers when listing.\n\nAlso when listing,\n-d     prints timestamps for each event\n-f     prints full time-date stamps in the US  `MM/DD/YY  hh:mm'\nformat\n-E     prints  full time-date stamps in the European `dd.mm.yyyy\nhh:mm' format\n-i     prints  full  time-date  stamps  in  ISO8601  `yyyy-mm-dd\nhh:mm' format\n-t fmt prints  time  and date stamps in the given format; fmt is\nformatted with the strftime function with the zsh  exten-\nsions  described  for the %D{string} prompt format in the\nsection EXPANSION OF PROMPT SEQUENCES in zshmisc(1).  The\nresulting formatted string must be no more than 256 char-\nacters or will not be printed\n-D     prints elapsed times; may be combined with one of the op-\ntions above\n\n`fc  -p'  pushes  the  current  history  list  onto  a stack and\nswitches to a new history list.  If the -a option is also speci-\nfied,  this  history  list will be automatically popped when the\ncurrent function scope is exited, which is a much  better  solu-\ntion than creating a trap function to call `fc -P' manually.  If\nno arguments are specified, the  history  list  is  left  empty,\n$HISTFILE  is  unset, and $HISTSIZE & $SAVEHIST are set to their\ndefault values.  If one argument is given, $HISTFILE is  set  to\nthat filename, $HISTSIZE & $SAVEHIST are left unchanged, and the\nhistory file is read in (if it exists)  to  initialize  the  new\nlist.   If a second argument is specified, $HISTSIZE & $SAVEHIST\nare instead set to the single specified numeric value.  Finally,\nif a third argument is specified, $SAVEHIST is set to a separate\nvalue from $HISTSIZE.  You are free to change these  environment\nvalues  for  the new history list however you desire in order to\nmanipulate the new history list.\n\n`fc -P' pops the history list back to an older list saved by `fc\n-p'.   The  current  list is saved to its $HISTFILE before it is\ndestroyed (assuming that $HISTFILE and $SAVEHIST are set  appro-\npriately,  of  course).  The values of $HISTFILE, $HISTSIZE, and\n$SAVEHIST are restored to the values they had when `fc  -p'  was\ncalled.   Note  that  this  restoration can conflict with making\nthese variables \"local\", so your best bet is to avoid local dec-\nlarations  for  these  variables  in functions that use `fc -p'.\nThe one other guaranteed-safe  combination  is  declaring  these\nvariables  to be local at the top of your function and using the\nautomatic option (-a) with `fc -p'.  Finally, note  that  it  is\nlegal to manually pop a push marked for automatic popping if you\nneed to do so before the function exits.\n\n`fc -R' reads the history from the given file,  `fc  -W'  writes\nthe  history out to the given file, and `fc -A' appends the his-\ntory out to the given file.  If no filename  is  specified,  the\n$HISTFILE  is  assumed.   If  the -I option is added to -R, only\nthose events that are not already contained within the  internal\nhistory  list are added.  If the -I option is added to -A or -W,\nonly those events  that  are  new  since  last  incremental  ap-\npend/write  to  the  history  file are appended/written.  In any\ncase, the created file will have no more than $SAVEHIST entries.\n\nfg [ job ... ]\njob ...\nBring each specified job in turn to the foreground.  If  no  job\nis specified, resume the current job.\n\nfloat [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ n ] ] [ name[=value] ... ]\nEquivalent  to  typeset  -E,  except  that options irrelevant to\nfloating point numbers are not permitted.\n\nfunctions [ {+|-}UkmtTuWz ] [ -x num ] [ name ... ]\nfunctions -c oldfn newfn\nfunctions -M [-s] mathfn [ min [ max [ shellfn ] ] ]\nfunctions -M [ -m pattern ... ]\nfunctions +M [ -m ] mathfn ...\nEquivalent to typeset -f, with the exception of the -c,  -x,  -M\nand  -W  options.   For  functions  -u and functions -U, see au-\ntoload, which provides additional options.\n\nThe -x option indicates that any functions output will have each\nleading  tab for indentation, added by the shell to show syntac-\ntic structure, expanded to the given number num of spaces.   num\ncan also be 0 to suppress all indentation.\n\nThe  -W option turns on the option WARNNESTEDVAR for the named\nfunction or functions only.  The option is  turned  off  at  the\nstart  of nested functions (apart from anonoymous functions) un-\nless the called function also has the -W attribute.\n\nThe -c option causes oldfn to be copied to newfn.  The  copy  is\nefficiently  handled internally by reference counting.  If oldfn\nwas marked for autoload it is first loaded and if this fails the\ncopy fails.  Either function may subsequently be redefined with-\nout affecting the other.  A typical idiom is that oldfn  is  the\nname of a library shell function which is then redefined to call\nnewfn, thereby installing a modified version of the function.\n\nUse of the -M option may not be combined with any of the options\nhandled by typeset -f.\n\nfunctions -M mathfn defines mathfn as the name of a mathematical\nfunction recognised in all forms  of  arithmetical  expressions;\nsee  the  section `Arithmetic Evaluation' in zshmisc(1).  By de-\nfault mathfn may take any number of  comma-separated  arguments.\nIf  min  is given, it must have exactly min args; if min and max\nare both given, it must have at least min and at most max  args.\nmax may be -1 to indicate that there is no upper limit.\n\nBy  default  the  function is implemented by a shell function of\nthe same name; if shellfn is specified it gives the name of  the\ncorresponding  shell function while mathfn remains the name used\nin arithmetical expressions.  The name of the function in $0  is\nmathfn  (not shellfn as would usually be the case), provided the\noption FUNCTIONARGZERO is in effect.  The positional parameters\nin  the shell function correspond to the arguments of the mathe-\nmatical function call.  The result of the last arithmetical  ex-\npression  evaluated  inside  the shell function (even if it is a\nform that normally only returns a status) gives  the  result  of\nthe mathematical function.\n\nIf  the additional option -s is given to functions -M, the argu-\nment to the function is a single string:  anything  between  the\nopening  and matching closing parenthesis is passed to the func-\ntion as a single argument, even if it includes commas  or  white\nspace.   The minimum and maximum argument specifiers must there-\nfore be 1 if given.  An empty  argument  list  is  passed  as  a\nzero-length string.\n\nfunctions -M with no arguments lists all such user-defined func-\ntions in the same form as a definition.  With the additional op-\ntion  -m  and  a  list  of arguments, all functions whose mathfn\nmatches one of the pattern arguments are listed.\n\nfunction +M removes the list of mathematical functions; with the\nadditional  option  -m the arguments are treated as patterns and\nall functions whose mathfn  matches  the  pattern  are  removed.\nNote  that  the shell function implementing the behaviour is not\nremoved (regardless of whether its name coincides with mathfn).\n\nFor example, the following prints the cube of 3:\n\nzmathcube() { (( $1 * $1 * $1 )) }\nfunctions -M cube 1 1 zmathcube\nprint $(( cube(3) ))\n\nThe following string function takes a single argument, including\nthe commas, so prints 11:\n\nstringfn() { (( $#1 )) }\nfunctions -Ms stringfn\nprint $(( stringfn(foo,bar,rod) ))\n\ngetcap See the section `The zsh/cap Module' in zshmodules(1).\n\ngetln [ -AclneE ] name ...\nRead the top value from the buffer stack and put it in the shell\nparameter name.  Equivalent to read -zr.\n\ngetopts optstring name [ arg ... ]\nChecks the args for legal options.  If the args are omitted, use\nthe  positional parameters.  A valid option argument begins with\na `+' or a `-'.  An argument not beginning with a `+' or a  `-',\nor  the argument `--', ends the options.  Note that a single `-'\nis not considered a valid option argument.   optstring  contains\nthe letters that getopts recognizes.  If a letter is followed by\na `:', that option requires an argument.   The  options  can  be\nseparated from the argument by blanks.\n\nEach  time  it  is  invoked, getopts places the option letter it\nfinds in the shell parameter name, prepended with a `+' when arg\nbegins  with  a  `+'.   The  index  of the next arg is stored in\nOPTIND.  The option argument, if any, is stored in OPTARG.\n\nThe first option to be examined may be changed by explicitly as-\nsigning  to  OPTIND.   OPTIND  has an initial value of 1, and is\nnormally set to 1 upon entry to a shell  function  and  restored\nupon  exit (this is disabled by the POSIXBUILTINS option).  OP-\nTARG is not reset and retains its value  from  the  most  recent\ncall  to  getopts.   If either of OPTIND or OPTARG is explicitly\nunset, it remains unset, and the index or option argument is not\nstored.  The option itself is still stored in name in this case.\n\nA leading `:' in optstring causes getopts to store the letter of\nany invalid option in OPTARG, and to set name to `?' for an  un-\nknown  option  and  to  `:' when a required argument is missing.\nOtherwise, getopts sets name to `?' and prints an error  message\nwhen  an  option  is  invalid.   The exit status is nonzero when\nthere are no more options.\n\nhash [ -Ldfmrv ] [ name[=value] ] ...\nhash can be used to directly modify the contents of the  command\nhash  table,  and  the named directory hash table.  Normally one\nwould modify these tables by modifying one's PATH (for the  com-\nmand  hash  table)  or  by creating appropriate shell parameters\n(for the named directory hash table).  The choice of hash  table\nto  work  on  is determined by the -d option; without the option\nthe command hash table is used, and with the  option  the  named\ndirectory hash table is used.\n\nA command name starting with a / is never hashed, whether by ex-\nplicit use of the hash command or otherwise.  Such a command  is\nalways found by direct look up in the file system.\n\nGiven  no  arguments,  and neither the -r or -f options, the se-\nlected hash table will be listed in full.\n\nThe -r option causes the selected hash table to be emptied.   It\nwill  be subsequently rebuilt in the normal fashion.  The -f op-\ntion causes the selected hash table to be fully rebuilt  immedi-\nately.   For the command hash table this hashes all the absolute\ndirectories in the PATH, and for the named directory hash  table\nthis adds all users' home directories.  These two options cannot\nbe used with any arguments.\n\nThe -m option causes the  arguments  to  be  taken  as  patterns\n(which  should  be  quoted)  and  the elements of the hash table\nmatching those patterns are printed.  This is the  only  way  to\ndisplay a limited selection of hash table elements.\n\nFor  each name with a corresponding value, put `name' in the se-\nlected hash table, associating it with the pathname `value'.  In\nthe  command hash table, this means that whenever `name' is used\nas a command argument, the shell will try to  execute  the  file\ngiven by `value'.  In the named directory hash table, this means\nthat `value' may be referred to as `~name'.\n\nFor each name with no corresponding value, attempt to  add  name\nto the hash table, checking what the appropriate value is in the\nnormal manner for that hash  table.   If  an  appropriate  value\ncan't be found, then the hash table will be unchanged.\n\nThe -v option causes hash table entries to be listed as they are\nadded by explicit specification.  If has no effect if used  with\n-f.\n\nIf the -L flag is present, then each hash table entry is printed\nin the form of a call to hash.\n\nhistory\nSame as fc -l.\n\ninteger [ {+|-}Hghlprtux ] [ {+|-}LRZi [ n ] ] [ name[=value] ... ]\nEquivalent to typeset -i, except that options irrelevant to  in-\ntegers are not permitted.\n\njobs [ -dlprs ] [ job ... ]\njobs -Z string\nLists  information  about  each given job, or all jobs if job is\nomitted.  The -l flag lists process IDs, and the -p  flag  lists\nprocess  groups.   If the -r flag is specified only running jobs\nwill be listed and if the -s flag is given only stopped jobs are\nshown.   If  the  -d flag is given, the directory from which the\njob was started (which may not be the current directory  of  the\njob) will also be shown.\n\nThe  -Z  option  replaces  the  shell's argument and environment\nspace with the given string,  truncated  if  necessary  to  fit.\nThis will normally be visible in ps (ps(1)) listings.  This fea-\nture is typically used by daemons, to indicate their state.\n\nkill [ -s signalname | -n signalnumber | -sig ] job ...\nkill -l [ sig ... ]\nSends either SIGTERM or the specified signal to the  given  jobs\nor  processes.  Signals are given by number or by names, with or\nwithout the `SIG' prefix.  If  the  signal  being  sent  is  not\n`KILL'  or  `CONT', then the job will be sent a `CONT' signal if\nit is stopped.  The argument job can be the process ID of a  job\nnot in the job list.  In the second form, kill -l, if sig is not\nspecified the signal names are listed.  Otherwise, for each  sig\nthat  is a name, the corresponding signal number is listed.  For\neach sig that is a signal number or a  number  representing  the\nexit  status  of  a process which was terminated or stopped by a\nsignal the name of the signal is printed.\n\nOn some systems, alternative signal names are allowed for a  few\nsignals.  Typical examples are SIGCHLD and SIGCLD or SIGPOLL and\nSIGIO, assuming they correspond to the same signal number.  kill\n-l  will  only list the preferred form, however kill -l alt will\nshow if the alternative form corresponds  to  a  signal  number.\nFor example, under Linux kill -l IO and kill -l POLL both output\n29, hence kill -IO and kill -POLL have the same effect.\n\nMany systems will allow process IDs to be  negative  to  kill  a\nprocess group or zero to kill the current process group.\n\nlet arg ...\nEvaluate  each arg as an arithmetic expression.  See the section\n`Arithmetic Evaluation'  in  zshmisc(1)  for  a  description  of\narithmetic  expressions.   The  exit status is 0 if the value of\nthe last expression is nonzero, 1 if it is zero, and 2 if an er-\nror occurred.\n\nlimit [ -hs ] [ resource [ limit ] ] ...\nSet  or  display  resource limits.  Unless the -s flag is given,\nthe limit applies only the children of  the  shell.   If  -s  is\ngiven  without  other arguments, the resource limits of the cur-\nrent shell is set to the previously set resource limits  of  the\nchildren.\n\nIf limit is not specified, print the current limit placed on re-\nsource, otherwise set the limit to the specified value.  If  the\n-h flag is given, use hard limits instead of soft limits.  If no\nresource is given, print all limits.\n\nWhen looping over multiple resources, the shell will abort imme-\ndiately  if  it detects a badly formed argument.  However, if it\nfails to set a limit for some other reason it will continue try-\ning to set the remaining limits.\n\nresource can be one of:\n\naddressspace\nMaximum amount of address space used.\naiomemorylocked\nMaximum  amount  of  memory  locked in RAM for AIO opera-\ntions.\naiooperations\nMaximum number of AIO operations.\ncachedthreads\nMaximum number of cached threads.\ncoredumpsize\nMaximum size of a core dump.\ncputime\nMaximum CPU seconds per process.\ndatasize\nMaximum data size (including stack) for each process.\ndescriptors\nMaximum value for a file descriptor.\nfilesize\nLargest single file allowed.\nkqueues\nMaximum number of kqueues allocated.\nmaxproc\nMaximum number of processes.\nmaxpthreads\nMaximum number of threads per process.\nmemorylocked\nMaximum amount of memory locked in RAM.\nmemoryuse\nMaximum resident set size.\nmsgqueue\nMaximum number of bytes in POSIX message queues.\nposixlocks\nMaximum number of POSIX locks per user.\npseudoterminals\nMaximum number of pseudo-terminals.\nresident\nMaximum resident set size.\nsigpending\nMaximum number of pending signals.\nsockbufsize\nMaximum size of all socket buffers.\nstacksize\nMaximum stack size for each process.\nswapsize\nMaximum amount of swap used.\nvmemorysize\nMaximum amount of virtual memory.\n\nWhich of these resource limits are available depends on the sys-\ntem.  resource can be abbreviated to any unambiguous prefix.  It\ncan also be an integer, which corresponds to the integer defined\nfor the resource by the operating system.\n\nIf argument corresponds to a number which is out of the range of\nthe resources configured into the shell, the shell will  try  to\nread or write the limit anyway, and will report an error if this\nfails.  As the shell does not store such  resources  internally,\nan  attempt  to  set the limit will fail unless the -s option is\npresent.\n\nlimit is a number, with an optional scaling factor, as follows:\n\nnh     hours\nnk     kilobytes (default)\nnm     megabytes or minutes\nng     gigabytes\n[mm:]ss\nminutes and seconds\n\nThe limit command is not made  available  by  default  when  the\nshell  starts in a mode emulating another shell.  It can be made\navailable with the command `zmodload -F zsh/rlimits b:limit'.\n\nlocal [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ n ] ] [ name[=value] ... ]\nSame as typeset, except that the options -g, and -f are not per-\nmitted.   In  this  case the -x option does not force the use of\n-g, i.e. exported variables will be local to functions.\n\nlog    List all users currently logged in who are affected by the  cur-\nrent setting of the watch parameter.\n\nlogout [ n ]\nSame as exit, except that it only works in a login shell.\n\nnoglob simple command\nSee the section `Precommand Modifiers' in zshmisc(1).\n\npopd [ -q ] [ {+|-}n ]\nRemove  an  entry  from the directory stack, and perform a cd to\nthe new top directory.  With no argument, the current top  entry\nis removed.  An argument of the form `+n' identifies a stack en-\ntry by counting from the left of the list shown by the dirs com-\nmand,  starting  with  zero.   An argument of the form -n counts\nfrom the right.  If the PUSHDMINUS option is set, the  meanings\nof `+' and `-' in this context are swapped.\n\nIf  the  -q (quiet) option is specified, the hook function chpwd\nand the functions in the array $chpwdfunctions are not  called,\nand  the new directory stack is not printed.  This is useful for\ncalls to popd that do not change the environment seen by an  in-\nteractive user.\n\nprint [ -abcDilmnNoOpPrsSz ] [ -u n ] [ -f format ] [ -C cols ]\n[ -v name ] [ -xX tabstop ] [ -R [ -en ]] [ arg ... ]\nWith  the  `-f' option the arguments are printed as described by\nprintf.  With no flags or with the flag `-', the  arguments  are\nprinted  on  the  standard output as described by echo, with the\nfollowing differences: the escape  sequence  `\\M-x'  (or  `\\Mx')\nmetafies  the  character  x  (sets  the highest bit), `\\C-x' (or\n`\\Cx') produces a control character (`\\C-@' and `\\C-?' give  the\ncharacters NULL and delete), a character code in octal is repre-\nsented by `\\NNN' (instead of `\\0NNN'), and `\\E' is a synonym for\n`\\e'.   Finally,  if  not in an escape sequence, `\\' escapes the\nfollowing character and is not printed.\n\n-a     Print arguments with the column incrementing first.  Only\nuseful with the -c and -C options.\n\n-b     Recognize  all the escape sequences defined for the bind-\nkey command, see the section `Zle Builtins' in zshzle(1).\n\n-c     Print the arguments in columns.  Unless -a is also given,\narguments are printed with the row incrementing first.\n\n-C cols\nPrint  the  arguments in cols columns.  Unless -a is also\ngiven, arguments are printed with  the  row  incrementing\nfirst.\n\n-D     Treat  the  arguments  as paths, replacing directory pre-\nfixes  with  ~  expressions  corresponding  to  directory\nnames, as appropriate.\n\n-i     If  given  together  with  -o or -O, sorting is performed\ncase-independently.\n\n-l     Print the arguments separated by newlines instead of spa-\nces.   Note:  if the list of arguments is empty, print -l\nwill still output one  empty  line.  To  print  a  possi-\nbly-empty  list of arguments one per line, use print -C1,\nas in `print -rC1 -- \"$list[@]\"'.\n\n-m     Take the first argument as a pattern (should be  quoted),\nand remove it from the argument list together with subse-\nquent arguments that do not match this pattern.\n\n-n     Do not add a newline to the output.\n\n-N     Print the arguments separated and  terminated  by  nulls.\nAgain,  print  -rNC1  -- \"$list[@]\" is a canonical way to\nprint an arbitrary list as null-delimited records.\n\n-o     Print the arguments sorted in ascending order.\n\n-O     Print the arguments sorted in descending order.\n\n-p     Print the arguments to the input of the coprocess.\n\n-P     Perform prompt expansion (see  EXPANSION  OF  PROMPT  SE-\nQUENCES in zshmisc(1)).  In combination with `-f', prompt\nescape sequences are parsed only within interpolated  ar-\nguments, not within the format string.\n\n-r     Ignore the escape conventions of echo.\n\n-R     Emulate  the BSD echo command, which does not process es-\ncape sequences unless the -e flag is given.  The -n  flag\nsuppresses  the  trailing  newline.   Only  the -e and -n\nflags are recognized after -R; all  other  arguments  and\noptions are printed.\n\n-s     Place  the  results in the history list instead of on the\nstandard output.  Each argument to the print  command  is\ntreated  as  a  single word in the history, regardless of\nits content.\n\n-S     Place the results in the history list instead of  on  the\nstandard  output.  In this case only a single argument is\nallowed; it will be split into words as if it were a full\nshell command line.  The effect is similar to reading the\nline from a history file with the  HISTLEXWORDS  option\nactive.\n\n-u n   Print the arguments to file descriptor n.\n\n-v name\nStore the printed arguments as the value of the parameter\nname.\n\n-x tab-stop\nExpand leading tabs on each line of output in the printed\nstring  assuming  a  tab  stop every tab-stop characters.\nThis is appropriate for formatting code that may  be  in-\ndented with tabs.  Note that leading tabs of any argument\nto print, not just the first, are expanded, even if print\nis  using  spaces to separate arguments (the column count\nis maintained across arguments but may  be  incorrect  on\noutput owing to previous unexpanded tabs).\n\nThe  start of the output of each print command is assumed\nto be aligned with a tab stop.  Widths of multibyte char-\nacters  are handled if the option MULTIBYTE is in effect.\nThis option is ignored if other formatting options are in\neffect,  namely  column  alignment or printf style, or if\noutput is to a special location such as shell history  or\nthe command line editor.\n\n-X tab-stop\nThis  is  similar  to  -x,  except  that  all tabs in the\nprinted string are expanded.  This is appropriate if tabs\nin  the  arguments are being used to produce a table for-\nmat.\n\n-z     Push the arguments onto the editing buffer  stack,  sepa-\nrated by spaces.\n\nIf  any  of `-m', `-o' or `-O' are used in combination with `-f'\nand there are no arguments (after the  removal  process  in  the\ncase of `-m') then nothing is printed.\n\nprintf [ -v name ] format [ arg ... ]\nPrint  the arguments according to the format specification. For-\nmatting rules are the same as used in C.  The  same  escape  se-\nquences  as for echo are recognised in the format. All C conver-\nsion specifications ending in one of csdiouxXeEfgGn are handled.\nIn  addition  to this, `%b' can be used instead of `%s' to cause\nescape sequences in the argument to be recognised and  `%q'  can\nbe used to quote the argument in such a way that allows it to be\nreused as shell input. With the numeric  format  specifiers,  if\nthe  corresponding  argument  starts with a quote character, the\nnumeric value of the following character is used as  the  number\nto  print;  otherwise the argument is evaluated as an arithmetic\nexpression. See the  section  `Arithmetic  Evaluation'  in  zsh-\nmisc(1)  for a description of arithmetic expressions. With `%n',\nthe corresponding argument is taken as an  identifier  which  is\ncreated as an integer parameter.\n\nNormally, conversion specifications are applied to each argument\nin order but they can explicitly specify the nth argument is  to\nbe  used by replacing `%' by `%n$' and `*' by `*n$'.  It is rec-\nommended that you do not mix references of this  explicit  style\nwith  the normal style and the handling of such mixed styles may\nbe subject to future change.\n\nIf arguments remain unused after formatting, the  format  string\nis reused until all arguments have been consumed. With the print\nbuiltin, this can be suppressed by using the -r option. If  more\narguments  are  required by the format than have been specified,\nthe behaviour is as if zero or an empty string had  been  speci-\nfied as the argument.\n\nThe -v option causes the output to be stored as the value of the\nparameter name, instead of printed. If name is an array and  the\nformat  string is reused when consuming arguments then one array\nelement will be used for each use of the format string.\n\npushd [ -qsLP ] [ arg ]\npushd [ -qsLP ] old new\npushd [ -qsLP ] {+|-}n\nChange the current directory, and push the old current directory\nonto the directory stack.  In the first form, change the current\ndirectory to arg.  If arg is not specified, change to the second\ndirectory  on the stack (that is, exchange the top two entries),\nor change to $HOME if the PUSHDTOHOME  option  is  set  or  if\nthere  is only one entry on the stack.  Otherwise, arg is inter-\npreted as it would be by cd.  The meaning of old and new in  the\nsecond form is also the same as for cd.\n\nThe third form of pushd changes directory by rotating the direc-\ntory list.  An argument of the form `+n' identifies a stack  en-\ntry by counting from the left of the list shown by the dirs com-\nmand, starting with zero.  An argument of the form  `-n'  counts\nfrom  the right.  If the PUSHDMINUS option is set, the meanings\nof `+' and `-' in this context are swapped.\n\nIf the -q (quiet) option is specified, the hook  function  chpwd\nand  the functions in the array $chpwdfunctions are not called,\nand the new directory stack is not printed.  This is useful  for\ncalls to pushd that do not change the environment seen by an in-\nteractive user.\n\nIf  the  option  -q  is  not  specified  and  the  shell  option\nPUSHDSILENT is not set, the directory stack will be printed af-\nter a pushd is performed.\n\nThe options -s, -L and -P have the same meanings as for  the  cd\nbuiltin.\n\npushln [ arg ... ]\nEquivalent to print -nz.\n\npwd [ -rLP ]\nPrint  the  absolute  pathname of the current working directory.\nIf the -r or the -P flag is specified, or the CHASELINKS option\nis  set  and the -L flag is not given, the printed path will not\ncontain symbolic links.\n\nr      Same as fc -e -.\n\nread [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ]\n[ -u n ] [ name[?prompt] ] [ name ...  ]\nRead one line and break it into fields using the  characters  in\n$IFS  as  separators, except as noted below.  The first field is\nassigned to the first name, the second field to the second name,\netc.,  with  leftover fields assigned to the last name.  If name\nis omitted then REPLY is used for scalars and reply for arrays.\n\n-r     Raw mode: a `\\' at the end of a  line  does  not  signify\nline continuation and backslashes in the line don't quote\nthe following character and are not removed.\n\n-s     Don't echo back characters if reading from the terminal.\n\n-q     Read only one character from the terminal and set name to\n`y'  if  this  character was `y' or `Y' and to `n' other-\nwise.  With this flag set the return status is zero  only\nif the character was `y' or `Y'.  This option may be used\nwith a timeout (see -t); if the read times  out,  or  en-\ncounters  end  of  file,  status 2 is returned.  Input is\nread from the terminal unless one of -u or -p is present.\nThis option may also be used within zle widgets.\n\n-k [ num ]\nRead  only  one (or num) characters.  All are assigned to\nthe first name, without word splitting.  This flag is ig-\nnored  when -q is present.  Input is read from the termi-\nnal unless one of -u or -p is present.  This  option  may\nalso be used within zle widgets.\n\nNote  that  despite  the  mnemonic `key' this option does\nread full characters, which may consist of multiple bytes\nif the option MULTIBYTE is set.\n\n-z     Read one entry from the editor buffer stack and assign it\nto the first  name,  without  word  splitting.   Text  is\npushed  onto  the stack with `print -z' or with push-line\nfrom the line editor (see zshzle(1)).  This flag  is  ig-\nnored when the -k or -q flags are present.\n\n-e\n-E     The  input  read is printed (echoed) to the standard out-\nput.  If the -e flag is used, no input is assigned to the\nparameters.\n\n-A     The  first  name is taken as the name of an array and all\nwords are assigned to it.\n\n-c\n-l     These flags are allowed only if called inside a  function\nused  for  completion (specified with the -K flag to com-\npctl).  If the -c flag is given, the words of the current\ncommand are read. If the -l flag is given, the whole line\nis assigned as a scalar.  If both flags are  present,  -l\nis used and -c is ignored.\n\n-n     Together with -c, the number of the word the cursor is on\nis read.  With -l, the index of the character the  cursor\nis on is read.  Note that the command name is word number\n1, not word 0, and that when the cursor is at the end  of\nthe  line,  its character index is the length of the line\nplus one.\n\n-u n   Input is read from file descriptor n.\n\n-p     Input is read from the coprocess.\n\n-d delim\nInput is terminated by the first character of  delim  in-\nstead of by newline.\n\n-t [ num ]\nTest if input is available before attempting to read.  If\nnum is present, it must begin with a digit  and  will  be\nevaluated  to  give  a  number of seconds, which may be a\nfloating point number; in this case the read times out if\ninput  is  not available within this time.  If num is not\npresent, it is taken to be zero, so that read returns im-\nmediately  if  no  input  is  available.   If no input is\navailable, return status 1 and do not set any variables.\n\nThis option is not available when reading from the editor\nbuffer  with  -z, when called from within completion with\n-c or -l, with -q which clears  the  input  queue  before\nreading,  or  within zle where other mechanisms should be\nused to test for input.\n\nNote that read does not attempt to alter the  input  pro-\ncessing  mode.   The  default mode is canonical input, in\nwhich an entire line is read at a time, so usually  `read\n-t'  will not read anything until an entire line has been\ntyped.  However, when reading from the terminal  with  -k\ninput  is processed one key at a time; in this case, only\navailability of the first character is  tested,  so  that\ne.g. `read -t -k 2' can still block on the second charac-\nter.  Use two instances of `read -t -k' if  this  is  not\nwhat is wanted.\n\nIf the first argument contains a `?', the remainder of this word\nis used as a prompt on standard error when the shell is interac-\ntive.\n\nThe  value (exit status) of read is 1 when an end-of-file is en-\ncountered, or when -c or -l is present and the  command  is  not\ncalled  from a compctl function, or as described for -q.  Other-\nwise the value is 0.\n\nThe behavior of some combinations of the -k, -p, -q, -u  and  -z\nflags  is  undefined.   Presently  -q cancels all the others, -p\ncancels -u, -k cancels -z, and otherwise -z cancels both -p  and\n-u.\n\nThe -c or -l flags cancel any and all of -kpquz.\n\nreadonly\nSame as typeset -r.  With the POSIXBUILTINS option set, same as\ntypeset -gr.\n\nrehash Same as hash -r.\n\nreturn [ n ]\nCauses a shell function or `.' script to return to the  invoking\nscript with the return status specified by an arithmetic expres-\nsion n. If n is omitted, the return status is that of  the  last\ncommand executed.\n\nIf  return  was  executed from a trap in a TRAPNAL function, the\neffect is different for zero and non-zero return  status.   With\nzero  status  (or  after  an  implicit  return at the end of the\ntrap), the shell will return to whatever it was previously  pro-\ncessing; with a non-zero status, the shell will behave as inter-\nrupted except that the return status of the  trap  is  retained.\nNote  that the numeric value of the signal which caused the trap\nis passed as  the  first  argument,  so  the  statement  `return\n$((128+$1))'  will  return  the same status as if the signal had\nnot been trapped.\n\nsched  See the section `The zsh/sched Module' in zshmodules(1).\n\nset [ {+|-}options | {+|-}o [ optionname ] ] ... [ {+|-}A [ name ] ]\n[ arg ... ]\nSet the options for the shell and/or set the positional  parame-\nters,  or  declare and set an array.  If the -s option is given,\nit causes the specified arguments to be sorted before  assigning\nthem to the positional parameters (or to the array name if -A is\nused).  With +s sort arguments in  descending  order.   For  the\nmeaning  of  the  other  flags, see zshoptions(1).  Flags may be\nspecified by name using the -o option. If no option name is sup-\nplied  with  -o, the current option states are printed:  see the\ndescription of setopt below for more information on the  format.\nWith  +o they are printed in a form that can be used as input to\nthe shell.\n\nIf the -A flag is specified, name is set to an array  containing\nthe  given args; if no name is specified, all arrays are printed\ntogether with their values.\n\nIf +A is used and name is an array, the given arguments will re-\nplace  the  initial elements of that array; if no name is speci-\nfied, all arrays are printed without their values.\n\nThe behaviour of arguments after -A name or +A name  depends  on\nwhether the option KSHARRAYS is set.  If it is not set, all ar-\nguments following name are treated as values for the array,  re-\ngardless  of  their  form.   If the option is set, normal option\nprocessing continues at that point; only regular  arguments  are\ntreated as values for the array.  This means that\n\nset -A array -x -- foo\n\nsets array to `-x -- foo' if KSHARRAYS is not set, but sets the\narray to foo and turns on the option `-x' if it is set.\n\nIf the -A flag is not present, but there  are  arguments  beyond\nthe  options,  the positional parameters are set.  If the option\nlist (if any) is terminated by `--', and there  are  no  further\narguments, the positional parameters will be unset.\n\nIf no arguments and no `--' are given, then the names and values\nof all parameters are printed on the standard  output.   If  the\nonly argument is `+', the names of all parameters are printed.\n\nFor historical reasons, `set -' is treated as `set +xv' and `set\n- args' as `set +xv -- args' when in any  other  emulation  mode\nthan zsh's native mode.\n\nsetcap See the section `The zsh/cap Module' in zshmodules(1).\n\nsetopt [ {+|-}options | {+|-}o optionname ] [ -m ] [ name ... ]\nSet  the  options  for  the shell.  All options specified either\nwith flags or by name are set.\n\nIf no arguments are supplied, the names of all options currently\nset  are printed.  The form is chosen so as to minimize the dif-\nferences from the default options for the current emulation (the\ndefault  emulation  being  native  zsh,  shown  as <Z> in zshop-\ntions(1)).  Options that are on by default for the emulation are\nshown  with  the prefix no only if they are off, while other op-\ntions are shown without the prefix no and only if they  are  on.\nIn  addition  to  options  changed from the default state by the\nuser, any options activated automatically by the shell (for  ex-\nample,  SHINSTDIN  or  INTERACTIVE)  will be shown in the list.\nThe format is further modified by the  option  KSHOPTIONPRINT,\nhowever  the  rationale for choosing options with or without the\nno prefix remains the same in this case.\n\nIf the -m flag is given the  arguments  are  taken  as  patterns\n(which  should  be  quoted  to protect them from filename expan-\nsion), and all options with names matching  these  patterns  are\nset.\n\nNote  that  a bad option name does not cause execution of subse-\nquent shell code to be aborted; this is behaviour  is  different\nfrom  that  of  `set  -o'.  This is because set is regarded as a\nspecial builtin by the POSIX standard, but setopt is not.\n\nshift [ -p ] [ n ] [ name ... ]\nThe positional parameters ${n+1} ...  are  renamed  to  $1  ...,\nwhere  n is an arithmetic expression that defaults to 1.  If any\nnames are given then the arrays with these names are shifted in-\nstead of the positional parameters.\n\nIf the option -p is given arguments are instead removed (popped)\nfrom the end rather than the start of the array.\n\nsource file [ arg ... ]\nSame as  `.',  except  that  the  current  directory  is  always\nsearched  and  is  always  searched first, before directories in\n$path.\n\nstat   See the section `The zsh/stat Module' in zshmodules(1).\n\nsuspend [ -f ]\nSuspend the execution of the shell (send it a SIGTSTP) until  it\nreceives  a  SIGCONT.   Unless the -f option is given, this will\nrefuse to suspend a login shell.\n\ntest [ arg ... ]\n[ [ arg ... ] ]\nLike the system version of test.  Added for  compatibility;  use\nconditional  expressions  instead  (see the section `Conditional\nExpressions').  The main differences between the conditional ex-\npression syntax and the test and [ builtins are:  these commands\nare not handled syntactically, so for example an empty  variable\nexpansion  may  cause  an  argument to be omitted; syntax errors\ncause status 2 to be returned instead  of  a  shell  error;  and\narithmetic operators expect integer arguments rather than arith-\nmetic expressions.\n\nThe command attempts to implement POSIX and its extensions where\nthese are specified.  Unfortunately there are intrinsic ambigui-\nties in the syntax; in particular there is  no  distinction  be-\ntween  test operators and strings that resemble them.  The stan-\ndard attempts to resolve these for small  numbers  of  arguments\n(up to four); for five or more arguments compatibility cannot be\nrelied on.  Users are urged wherever possible to  use  the  `[['\ntest syntax which does not have these ambiguities.\n\ntimes  Print  the  accumulated  user and system times for the shell and\nfor processes run from the shell.\n\ntrap [ arg ] [ sig ... ]\narg is a series of commands (usually quoted to protect  it  from\nimmediate  evaluation by the shell) to be read and executed when\nthe shell receives any of the signals specified by one  or  more\nsig  args.  Each sig can be given as a number, or as the name of\na signal either with or without the string SIG in front (e.g. 1,\nHUP, and SIGHUP are all the same signal).\n\nIf arg is `-', then the specified signals are reset to their de-\nfaults, or, if no sig args are present, all traps are reset.\n\nIf arg is an empty string, then the specified  signals  are  ig-\nnored by the shell (and by the commands it invokes).\n\nIf  arg  is  omitted but one or more sig args are provided (i.e.\nthe first argument is a valid signal number or name), the effect\nis the same as if arg had been specified as `-'.\n\nThe trap command with no arguments prints a list of commands as-\nsociated with each signal.\n\nIf sig is ZERR then arg will be executed after each command with\na nonzero exit status.  ERR is an alias for ZERR on systems that\nhave no SIGERR signal (this is the usual case).\n\nIf sig is DEBUG then arg will be executed before each command if\nthe  option  DEBUGBEFORECMD is set (as it is by default), else\nafter each command.  Here, a `command' is what is described as a\n`sublist'  in the shell grammar, see the section SIMPLE COMMANDS\n& PIPELINES in zshmisc(1).  If DEBUGBEFORECMD is  set  various\nadditional  features  are  available.   First, it is possible to\nskip the next command by setting the option  ERREXIT;  see  the\ndescription  of the ERREXIT option in zshoptions(1).  Also, the\nshell parameter ZSHDEBUGCMD is set to the string corresponding\nto  the  command  to  be executed following the trap.  Note that\nthis string is reconstructed from the internal  format  and  may\nnot be formatted the same way as the original text.  The parame-\nter is unset after the trap is executed.\n\nIf sig is 0 or EXIT and the trap statement  is  executed  inside\nthe  body  of a function, then the command arg is executed after\nthe function completes.  The value of $? at the start of  execu-\ntion is the exit status of the shell or the return status of the\nfunction exiting.  If sig is 0 or EXIT and the trap statement is\nnot executed inside the body of a function, then the command arg\nis executed when the shell terminates; the trap runs before  any\nzshexit hook functions.\n\nZERR, DEBUG, and EXIT traps are not executed inside other traps.\nZERR and DEBUG traps are  kept  within  subshells,  while  other\ntraps are reset.\n\nNote  that traps defined with the trap builtin are slightly dif-\nferent from those defined as `TRAPNAL () { ... }', as the latter\nhave  their  own function environment (line numbers, local vari-\nables, etc.) while the former use the environment of the command\nin which they were called.  For example,\n\ntrap 'print $LINENO' DEBUG\n\nwill  print  the  line number of a command executed after it has\nrun, while\n\nTRAPDEBUG() { print $LINENO; }\n\nwill always print the number zero.\n\nAlternative signal names are allowed  as  described  under  kill\nabove.   Defining a trap under either name causes any trap under\nan alternative name to be removed.  However, it  is  recommended\nthat  for consistency users stick exclusively to one name or an-\nother.\n\ntrue [ arg ... ]\nDo nothing and return an exit status of 0.\n\nttyctl [ -fu ]\nThe -f option freezes the tty (i.e. terminal or terminal  emula-\ntor),  and  -u unfreezes it.  When the tty is frozen, no changes\nmade to the tty settings by external programs will be honored by\nthe  shell,  except  for  changes in the size of the screen; the\nshell will simply reset the settings to their previous values as\nsoon as each command exits or is suspended.  Thus, stty and sim-\nilar programs have no effect when the tty is  frozen.   Freezing\nthe  tty  does not cause the current state to be remembered: in-\nstead, it causes future changes to the state to be blocked.\n\nWithout options it reports whether the  terminal  is  frozen  or\nnot.\n\nNote  that,  regardless of whether the tty is frozen or not, the\nshell needs to change the settings when the line editor  starts,\nso  unfreezing  the  tty does not guarantee settings made on the\ncommand line are preserved.  Strings  of  commands  run  between\nediting  the  command line will see a consistent tty state.  See\nalso the shell variable STTY for a means of initialising the tty\nbefore running external commands.\n\ntype [ -wfpamsS ] name ...\nEquivalent to whence -v.\n\ntypeset [ {+|-}AHUaghlmrtux ] [ {+|-}EFLRZip [ n ] ]\n[ + ] [ name[=value] ... ]\ntypeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ n ] ]\n[ + | SCALAR[=value] array[=(value ...)] [ sep ] ]\ntypeset -f [ {+|-}TUkmtuz ] [ + ] [ name ... ]\nSet or display attributes and values for shell parameters.\n\nExcept  as  noted below for control flags that change the behav-\nior, a parameter is created for each name that does not  already\nrefer  to  one.  When inside a function, a new parameter is cre-\nated for every name (even those that already exist), and is  un-\nset  again  when the function completes.  See `Local Parameters'\nin zshparam(1).  The same rules apply to special  shell  parame-\nters, which retain their special attributes when made local.\n\nFor  each  name=value  assignment,  the parameter name is set to\nvalue.\n\nIf the shell option TYPESETSILENT is not set, for each  remain-\ning  name  that  refers  to a parameter that is already set, the\nname and value of the parameter are printed in the  form  of  an\nassignment.  Nothing is printed for newly-created parameters, or\nwhen any attribute flags listed below are given along  with  the\nname.   Using  `+'  instead  of  minus to introduce an attribute\nturns it off.\n\nIf no name is present, the names and values  of  all  parameters\nare printed.  In this case the attribute flags restrict the dis-\nplay to only  those  parameters  that  have  the  specified  at-\ntributes,  and  using  `+' rather than `-' to introduce the flag\nsuppresses printing of the values of parameters when there is no\nparameter name.\n\nAll  forms  of  the command handle scalar assignment.  Array as-\nsignment is possible if any of the reserved words  declare,  ex-\nport, float, integer, local, readonly or typeset is matched when\nthe line is parsed (N.B. not when it is executed).  In this case\nthe  arguments  are  parsed as assignments, except that the `+='\nsyntax and the GLOBASSIGN option are not supported, and  scalar\nvalues  after  =  are  not split further into words, even if ex-\npanded (regardless of the setting  of  the  KSHTYPESET  option;\nthis option is obsolete).\n\nExamples  of  the  differences between command and reserved word\nparsing:\n\n# Reserved word parsing\ntypeset svar=$(echo one word) avar=(several words)\n\nThe above creates a scalar parameter svar and an array parameter\navar as if the assignments had been\n\nsvar=\"one word\"\navar=(several words)\n\nOn the other hand:\n\n# Normal builtin interface\nbuiltin typeset svar=$(echo two words)\n\nThe builtin keyword causes the above to use the standard builtin\ninterface to typeset in which argument parsing is  performed  in\nthe  same  way  as  for  other commands.  This example creates a\nscalar svar containing the value two and another scalar  parame-\nter  words with no value.  An array value in this case would ei-\nther cause an error or be treated as  an  obscure  set  of  glob\nqualifiers.\n\nArbitrary arguments are allowed if they take the form of assign-\nments after command line expansion; however, these only  perform\nscalar assignment:\n\nvar='svar=val'\ntypeset $var\n\nThe  above  sets  the  scalar  parameter  svar to the value val.\nParentheses around the value within var would  not  cause  array\nassignment  as  they will be treated as ordinary characters when\n$var is substituted.  Any non-trivial expansion in the name part\nof  the  assignment  causes  the  argument to be treated in this\nfashion:\n\ntypeset {var1,var2,var3}=name\n\nThe above syntax is valid, and has the expected effect  of  set-\nting  the  three  parameters  to the same value, but the command\nline is parsed as a set of three normal command  line  arguments\nto  typeset after expansion.  Hence it is not possible to assign\nto multiple arrays by this means.\n\nNote that each interface to any of the commands my  be  disabled\nseparately.   For example, `disable -r typeset' disables the re-\nserved word interface to typeset, exposing  the  builtin  inter-\nface,  while  `disable typeset' disables the builtin.  Note that\ndisabling the reserved word  interface  for  typeset  may  cause\nproblems  with the output of `typeset -p', which assumes the re-\nserved word interface is available in order to restore array and\nassociative array values.\n\nUnlike parameter assignment statements, typeset's exit status on\nan assignment that involves a command substitution does not  re-\nflect  the  exit status of the command substitution.  Therefore,\nto test for an error in a  command  substitution,  separate  the\ndeclaration of the parameter from its initialization:\n\n# WRONG\ntypeset var1=$(exit 1) || echo \"Trouble with var1\"\n\n# RIGHT\ntypeset var1 && var1=$(exit 1) || echo \"Trouble with var1\"\n\nTo  initialize a parameter param to a command output and mark it\nreadonly, use typeset -r param or readonly param after  the  pa-\nrameter assignment statement.\n\nIf  no  attribute  flags are given, and either no name arguments\nare present or the flag +m is used,  then  each  parameter  name\nprinted  is preceded by a list of the attributes of that parame-\nter (array, association, exported, float, integer, readonly,  or\nundefined  for  autoloaded parameters not yet loaded).  If +m is\nused with attribute flags, and all those  flags  are  introduced\nwith  +, the matching parameter names are printed but their val-\nues are not.\n\nThe following control flags change the behavior of typeset:\n\n+      If `+' appears by itself in a separate word as  the  last\noption,  then the names of all parameters (functions with\n-f) are printed, but the  values  (function  bodies)  are\nnot.   No  name  arguments may appear, and it is an error\nfor any other options to follow `+'.  The effect  of  `+'\nis  as if all attribute flags which precede it were given\nwith a `+' prefix.  For example, `typeset -U +' is equiv-\nalent  to  `typeset +U' and displays the names of all ar-\nrays having the uniqueness attribute, whereas `typeset -f\n-U  +'  displays the names of all autoloadable functions.\nIf + is the only option, then  type  information  (array,\nreadonly,  etc.)  is  also printed for each parameter, in\nthe same manner as `typeset +m \"*\"'.\n\n-g     The -g (global) means that any resulting  parameter  will\nnot  be  restricted  to local scope.  Note that this does\nnot necessarily mean that the parameter will  be  global,\nas the flag will apply to any existing parameter (even if\nunset) from an enclosing function.  This  flag  does  not\naffect  the parameter after creation, hence it has no ef-\nfect when listing existing parameters, nor does the  flag\n+g have any effect except in combination with -m (see be-\nlow).\n\n-m     If the -m flag is given the name arguments are  taken  as\npatterns  (use quoting to prevent these from being inter-\npreted as file patterns).  With no attribute  flags,  all\nparameters  (or functions with the -f flag) with matching\nnames are printed (the shell option TYPESETSILENT is not\nused in this case).\n\nIf the +g flag is combined with -m, a new local parameter\nis created for every matching parameter that is  not  al-\nready local.  Otherwise -m applies all other flags or as-\nsignments to the existing parameters.\n\nExcept when assignments are made with  name=value,  using\n+m forces the matching parameters and their attributes to\nbe printed, even inside a function.  Note that -m is  ig-\nnored  if no patterns are given, so `typeset -m' displays\nattributes but `typeset -a +m' does not.\n\n-p [ n ]\nIf the -p option is  given,  parameters  and  values  are\nprinted  in the form of a typeset command with an assign-\nment, regardless of other flags and options.   Note  that\nthe  -H flag on parameters is respected; no value will be\nshown for these parameters.\n\n-p may be followed by an optional integer argument.  Cur-\nrently  only  the value 1 is supported.  In this case ar-\nrays and associative arrays are printed with newlines be-\ntween indented elements for readability.\n\n-T [ scalar[=value] array[=(value ...)] [ sep ] ]\nThis  flag has a different meaning when used with -f; see\nbelow.  Otherwise the -T option requires  zero,  two,  or\nthree  arguments  to  be present.  With no arguments, the\nlist of parameters created  in  this  fashion  is  shown.\nWith  two  or three arguments, the first two are the name\nof a scalar and of an array  parameter  (in  that  order)\nthat  will  be  tied  together in the manner of $PATH and\n$path.  The optional third argument is a single-character\nseparator  which will be used to join the elements of the\narray to form the scalar; if absent, a colon is used,  as\nwith $PATH.  Only the first character of the separator is\nsignificant;  any  remaining  characters   are   ignored.\nMultibyte characters are not yet supported.\n\nOnly  one  of  the scalar and array parameters may be as-\nsigned an initial value (the restrictions  on  assignment\nforms described above also apply).\n\nBoth  the scalar and the array may be manipulated as nor-\nmal.  If one is unset, the other  will  automatically  be\nunset  too.   There  is  no  way of untying the variables\nwithout unsetting them, nor of converting the type of one\nof  them  with another typeset command; +T does not work,\nassigning an array to scalar is an error, and assigning a\nscalar to array sets it to be a single-element array.\n\nNote  that  both  `typeset  -xT ...'  and `export -T ...'\nwork, but only the scalar  will  be  marked  for  export.\nSetting the value using the scalar version causes a split\non all separators (which cannot be quoted).  It is possi-\nble to apply -T to two previously tied variables but with\na different separator character, in which case the  vari-\nables  remain  joined  as  before  but  the  separator is\nchanged.\n\nWhen an existing scalar is tied to a new array, the value\nof  the  scalar  is preserved but no attribute other than\nexport will be preserved.\n\nAttribute flags that transform the final value (-L, -R, -Z,  -l,\n-u) are only applied to the expanded value at the point of a pa-\nrameter expansion expression using `$'.  They  are  not  applied\nwhen  a  parameter  is retrieved internally by the shell for any\npurpose.\n\nThe following attribute flags may be specified:\n\n-A     The names refer to associative array parameters; see `Ar-\nray Parameters' in zshparam(1).\n\n-L [ n ]\nLeft  justify  and  remove  leading blanks from the value\nwhen the parameter is expanded.  If n is nonzero, it  de-\nfines the width of the field.  If n is zero, the width is\ndetermined by the width of the value of the first assign-\nment.   In  the case of numeric parameters, the length of\nthe complete value assigned to the parameter is  used  to\ndetermine the width, not the value that would be output.\n\nThe width is the count of characters, which may be multi-\nbyte characters if the MULTIBYTE  option  is  in  effect.\nNote  that the screen width of the character is not taken\ninto account; if this is required, use padding  with  pa-\nrameter  expansion  flags  ${(ml...)...}  as described in\n`Parameter Expansion Flags' in zshexpn(1).\n\nWhen the parameter is expanded, it is filled on the right\nwith  blanks  or truncated if necessary to fit the field.\nNote truncation can lead to unexpected results  with  nu-\nmeric  parameters.   Leading  zeros are removed if the -Z\nflag is also set.\n\n-R [ n ]\nSimilar to -L, except that right justification  is  used;\nwhen  the parameter is expanded, the field is left filled\nwith blanks or truncated from the end.  May not  be  com-\nbined with the -Z flag.\n\n-U     For  arrays  (but  not for associative arrays), keep only\nthe first occurrence of each duplicated value.  This  may\nalso  be  set for tied parameters (see -T) or colon-sepa-\nrated special parameters like PATH or FIGNORE, etc.  Note\nthe  flag takes effect on assignment, and the type of the\nvariable being assigned to is  determinative;  for  vari-\nables  with  shared values it is therefore recommended to\nset the flag for all interfaces, e.g.  `typeset  -U  PATH\npath'.\n\nThis  flag has a different meaning when used with -f; see\nbelow.\n\n-Z [ n ]\nSpecially handled if set along with the -L flag.   Other-\nwise,  similar  to -R, except that leading zeros are used\nfor padding instead of  blanks  if  the  first  non-blank\ncharacter  is  a digit.  Numeric parameters are specially\nhandled: they are always eligible for  padding  with  ze-\nroes, and the zeroes are inserted at an appropriate place\nin the output.\n\n-a     The names refer to array parameters.  An array  parameter\nmay be created this way, but it may be assigned to in the\ntypeset statement only if the reserved word form of type-\nset  is  enabled (as it is by default).  When displaying,\nboth normal and associative arrays are shown.\n\n-f     The names refer to functions rather than parameters.   No\nassignments  can  be made, and the only other valid flags\nare -t, -T, -k, -u, -U and -z.  The flag -t turns on exe-\ncution  tracing  for  this function; the flag -T does the\nsame, but turns off tracing for any named (not anonymous)\nfunction  called  from the present one, unless that func-\ntion also has the -t or -T flag.  The  -u  and  -U  flags\ncause  the function to be marked for autoloading; -U also\ncauses alias expansion to be suppressed when the function\nis loaded.  See the description of the `autoload' builtin\nfor details.\n\nNote that the builtin functions provides the  same  basic\ncapabilities  as typeset -f but gives access to a few ex-\ntra options; autoload gives  further  additional  options\nfor the case typeset -fu and typeset -fU.\n\n-h     Hide:  only  useful  for special parameters (those marked\n`<S>' in the table in zshparam(1)), and for local parame-\nters  with  the  same name as a special parameter, though\nharmless for others.  A special parameter with  this  at-\ntribute  will not retain its special effect when made lo-\ncal.  Thus after `typeset -h PATH', a function containing\n`typeset  PATH'  will  create an ordinary local parameter\nwithout the usual behaviour of PATH.  Alternatively,  the\nlocal parameter may itself be given this attribute; hence\ninside a function `typeset -h PATH' creates  an  ordinary\nlocal parameter and the special PATH parameter is not al-\ntered in any way.  It is also possible to create a  local\nparameter  using  `typeset  +h  special', where the local\ncopy of special will retain its  special  properties  re-\ngardless  of having the -h attribute.  Global special pa-\nrameters loaded from shell modules  (currently  those  in\nzsh/mapfile  and  zsh/parameter)  are automatically given\nthe -h attribute to avoid name clashes.\n\n-H     Hide value: specifies that typeset will not  display  the\nvalue  of the parameter when listing parameters; the dis-\nplay for such parameters is always as if the `+' flag had\nbeen  given.   Use  of the parameter is in other respects\nnormal, and the option does not apply if the parameter is\nspecified  by  name,  or  by  pattern with the -m option.\nThis is on by default for the parameters in  the  zsh/pa-\nrameter and zsh/mapfile modules.  Note, however, that un-\nlike the -h flag this is also useful for non-special  pa-\nrameters.\n\n-i [ n ]\nUse  an internal integer representation.  If n is nonzero\nit defines the output arithmetic base,  otherwise  it  is\ndetermined  by  the first assignment.  Bases from 2 to 36\ninclusive are allowed.\n\n-E [ n ]\nUse an internal double-precision floating point represen-\ntation.  On output the variable will be converted to sci-\nentific notation.  If n is nonzero it defines the  number\nof significant figures to display; the default is ten.\n\n-F [ n ]\nUse an internal double-precision floating point represen-\ntation.  On output the  variable  will  be  converted  to\nfixed-point decimal notation.  If n is nonzero it defines\nthe number of digits to display after the decimal  point;\nthe default is ten.\n\n-l     Convert  the  result to lower case whenever the parameter\nis expanded.  The value is not converted when assigned.\n\n-r     The given names are marked readonly.  Note that  if  name\nis  a  special  parameter,  the readonly attribute can be\nturned on, but cannot then be turned off.\n\nIf the POSIXBUILTINS option is set, the readonly  attri-\nbute  is  more restrictive: unset variables can be marked\nreadonly and cannot then be set; furthermore,  the  read-\nonly attribute cannot be removed from any variable.\n\nIt  is  still  possible to change other attributes of the\nvariable though, some of which like -U or -Z would affect\nthe  value. More generally, the readonly attribute should\nnot be relied on as a security mechanism.\n\nNote that in zsh (like in pdksh  but  unlike  most  other\nshells)  it  is still possible to create a local variable\nof the same name as this is considered a different  vari-\nable (though this variable, too, can be marked readonly).\nSpecial variables that have  been  made  readonly  retain\ntheir value and readonly attribute when made local.\n\n-t     Tags  the named parameters.  Tags have no special meaning\nto the shell.  This flag has  a  different  meaning  when\nused with -f; see above.\n\n-u     Convert  the  result to upper case whenever the parameter\nis expanded.  The value is not converted  when  assigned.\nThis  flag has a different meaning when used with -f; see\nabove.\n\n-x     Mark for automatic export to the  environment  of  subse-\nquently  executed  commands.  If the option GLOBALEXPORT\nis set, this implies the option -g, unless +g is also ex-\nplicitly  given; in other words the parameter is not made\nlocal to the enclosing function.  This is for compatibil-\nity with previous versions of zsh.\n\nulimit [ -HSa ] [ { -bcdfiklmnpqrsTtvwx | -N resource } [ limit ] ... ]\nSet  or  display  resource limits of the shell and the processes\nstarted by the shell.  The value of limit can be a number in the\nunit specified below or one of the values `unlimited', which re-\nmoves the limit on the resource, or `hard', which uses the  cur-\nrent value of the hard limit on the resource.\n\nBy  default, only soft limits are manipulated. If the -H flag is\ngiven use hard limits instead of soft limits.  If the -S flag is\ngiven together with the -H flag set both hard and soft limits.\n\nIf no options are used, the file size limit (-f) is assumed.\n\nIf limit is omitted the current value of the specified resources\nare printed.  When more than one resource value is printed,  the\nlimit name and unit is printed before each value.\n\nWhen looping over multiple resources, the shell will abort imme-\ndiately if it detects a badly formed argument.  However,  if  it\nfails to set a limit for some other reason it will continue try-\ning to set the remaining limits.\n\nNot all the following resources are supported  on  all  systems.\nRunning ulimit -a will show which are supported.\n\n-a     Lists all of the current resource limits.\n-b     Socket buffer size in bytes (N.B. not kilobytes)\n-c     512-byte blocks on the size of core dumps.\n-d     Kilobytes on the size of the data segment.\n-f     512-byte blocks on the size of files written.\n-i     The number of pending signals.\n-k     The number of kqueues allocated.\n-l     Kilobytes on the size of locked-in memory.\n-m     Kilobytes on the size of physical memory.\n-n     open file descriptors.\n-p     The number of pseudo-terminals.\n-q     Bytes in POSIX message queues.\n-r     Maximum  real  time priority.  On some systems where this\nis not available, such as NetBSD, this has the  same  ef-\nfect as -T for compatibility with sh.\n-s     Kilobytes on the size of the stack.\n-T     The number of simultaneous threads available to the user.\n-t     CPU seconds to be used.\n-u     The number of processes available to the user.\n-v     Kilobytes on the size of virtual memory.  On some systems\nthis refers to the limit called `address space'.\n-w     Kilobytes on the size of swapped out memory.\n-x     The number of locks on files.\n\nA resource may also be specified by integer in the form `-N  re-\nsource',  where  resource corresponds to the integer defined for\nthe resource by the operating system.  This may be used  to  set\nthe  limits for resources known to the shell which do not corre-\nspond to option letters.  Such limits will be shown by number in\nthe output of `ulimit -a'.\n\nThe  number may alternatively be out of the range of limits com-\npiled into the shell.  The shell will try to read or  write  the\nlimit anyway, and will report an error if this fails.\n\numask [ -S ] [ mask ]\nThe umask is set to mask.  mask can be either an octal number or\na symbolic value as described in chmod(1).  If mask is  omitted,\nthe  current value is printed.  The -S option causes the mask to\nbe printed as a symbolic value.  Otherwise, the mask is  printed\nas  an octal number.  Note that in the symbolic form the permis-\nsions you specify are those which are to be allowed (not denied)\nto the users specified.\n\nunalias [ -ams ] name ...\nRemoves  aliases.  This command works the same as unhash -a, ex-\ncept that the -a option removes all regular or  global  aliases,\nor  with  -s  all suffix aliases: in this case no name arguments\nmay appear.  The options -m (remove by pattern) and  -s  without\n-a (remove listed suffix aliases) behave as for unhash -a.  Note\nthat the meaning of -a is different between unalias and unhash.\n\nunfunction\nSame as unhash -f.\n\nunhash [ -adfms ] name ...\nRemove the element named name from an internal hash table.   The\ndefault  is remove elements from the command hash table.  The -a\noption causes unhash to remove regular or global  aliases;  note\nwhen  removing a global aliases that the argument must be quoted\nto prevent it from being expanded before  being  passed  to  the\ncommand.   The -s option causes unhash to remove suffix aliases.\nThe -f option causes unhash to remove shell functions.   The  -d\noptions  causes  unhash  to remove named directories.  If the -m\nflag is given the arguments are taken  as  patterns  (should  be\nquoted)  and  all  elements of the corresponding hash table with\nmatching names will be removed.\n\nunlimit [ -hs ] resource ...\nThe resource limit for each resource is set to the  hard  limit.\nIf  the  -h  flag  is given and the shell has appropriate privi-\nleges, the hard resource limit for  each  resource  is  removed.\nThe  resources  of  the shell process are only changed if the -s\nflag is given.\n\nThe unlimit command is not made available by  default  when  the\nshell  starts in a mode emulating another shell.  It can be made\navailable with the command `zmodload -F zsh/rlimits b:unlimit'.\n\nunset [ -fmv ] name ...\nEach named parameter is unset.  Local  parameters  remain  local\neven  if unset; they appear unset within scope, but the previous\nvalue will still reappear when the scope ends.\n\nIndividual elements of associative array parameters may be unset\nby  using  subscript  syntax on name, which should be quoted (or\nthe entire command prefixed with noglob)  to  protect  the  sub-\nscript from filename generation.\n\nIf  the -m flag is specified the arguments are taken as patterns\n(should be quoted) and all parameters with  matching  names  are\nunset.  Note that this cannot be used when unsetting associative\narray elements, as the subscript will be treated as part of  the\npattern.\n\nThe  -v  flag  specifies that name refers to parameters. This is\nthe default behaviour.\n\nunset -f is equivalent to unfunction.\n\nunsetopt [ {+|-}options | {+|-}o optionname ] [ name ... ]\nUnset the options for the shell.  All options  specified  either\nwith  flags or by name are unset.  If no arguments are supplied,\nthe names of all options currently unset are printed.  If the -m\nflag  is given the arguments are taken as patterns (which should\nbe quoted to preserve them from being interpreted as  glob  pat-\nterns),  and  all options with names matching these patterns are\nunset.\n\nvared  See the section `Zle Builtins' in zshzle(1).\n\nwait [ job ... ]\nWait for the specified jobs or processes.  If job is  not  given\nthen  all currently active child processes are waited for.  Each\njob can be either a job specification or the process ID of a job\nin  the job table.  The exit status from this command is that of\nthe job waited for.  If job represents an unknown job or process\nID,  a  warning  is printed (unless the POSIXBUILTINS option is\nset) and the exit status is 127.\n\nIt is possible  to  wait  for  recent  processes  (specified  by\nprocess ID, not by job) that were running in the background even\nif the process has exited.  Typically the  process  ID  will  be\nrecorded  by  capturing the value of the variable $! immediately\nafter the process has been started.  There is  a  limit  on  the\nnumber  of process IDs remembered by the shell; this is given by\nthe value of the system configuration parameter CHILDMAX.  When\nthis  limit  is  reached, older process IDs are discarded, least\nrecently started processes first.\n\nNote there is no protection against  the  process  ID  wrapping,\ni.e.  if  the wait is not executed soon enough there is a chance\nthe process waited for is the wrong  one.   A  conflict  implies\nboth process IDs have been generated by the shell, as other pro-\ncesses are not recorded, and that the user is potentially inter-\nested in both, so this problem is intrinsic to process IDs.\n\nwhence [ -vcwfpamsS ] [ -x num ] name ...\nFor each name, indicate how it would be interpreted if used as a\ncommand name.\n\nIf name is not an alias,  built-in  command,  external  command,\nshell  function,  hashed  command,  or a reserved word, the exit\nstatus shall be non-zero, and -- if -v, -c, or -w was passed  --\na  message will be written to standard output.  (This is differ-\nent from other shells that write that message  to  standard  er-\nror.)\n\nwhence  is most useful when name is only the last path component\nof a command, i.e. does not include a `/'; in  particular,  pat-\ntern  matching only succeeds if just the non-directory component\nof the command is passed.\n\n-v     Produce a more verbose report.\n\n-c     Print the results  in  a  csh-like  format.   This  takes\nprecedence over -v.\n\n-w     For  each  name,  print `name: word' where word is one of\nalias, builtin, command, function,  hashed,  reserved  or\nnone,  according  as  name  corresponds  to  an  alias, a\nbuilt-in command, an external command, a shell  function,\na command defined with the hash builtin, a reserved word,\nor is not recognised.  This takes precedence over -v  and\n-c.\n\n-f     Causes  the contents of a shell function to be displayed,\nwhich would otherwise not happen unless the -c flag  were\nused.\n\n-p     Do  a  path  search  for name even if it is an alias, re-\nserved word, shell function or builtin.\n\n-a     Do a search for all occurrences of  name  throughout  the\ncommand  path.   Normally  only  the  first occurrence is\nprinted.\n\n-m     The arguments are taken as patterns  (pattern  characters\nshould  be  quoted), and the information is displayed for\neach command matching one of these patterns.\n\n-s     If a pathname contains symlinks, print  the  symlink-free\npathname as well.\n\n-S     As  -s, but if the pathname had to be resolved by follow-\ning  multiple  symlinks,  the  intermediate   steps   are\nprinted, too.  The symlink resolved at each step might be\nanywhere in the path.\n\n-x num Expand tabs when outputting shell functions using the  -c\noption.  This has the same effect as the -x option to the\nfunctions builtin.\n\nwhere [ -wpmsS ] [ -x num ] name ...\nEquivalent to whence -ca.\n\nwhich [ -wpamsS ] [ -x num ] name ...\nEquivalent to whence -c.\n\nzcompile [ -U ] [ -z | -k ] [ -R | -M ] file [ name ... ]\nzcompile -ca [ -m ] [ -R | -M ] file [ name ... ]\nzcompile -t file [ name ... ]\nThis builtin  command  can  be  used  to  compile  functions  or\nscripts,  storing  the  compiled  form in a file, and to examine\nfiles containing the compiled  form.   This  allows  faster  au-\ntoloading of functions and sourcing of scripts by avoiding pars-\ning of the text when the files are read.\n\nThe first form (without the -c, -a or -t options) creates a com-\npiled file.  If only the file argument is given, the output file\nhas the name `file.zwc' and will be placed in the same directory\nas  the  file.  The shell will load the compiled file instead of\nthe normal function file when the function  is  autoloaded;  see\nthe section `Autoloading Functions' in zshmisc(1) for a descrip-\ntion of how autoloaded functions are  searched.   The  extension\n.zwc stands for `zsh word code'.\n\nIf  there is at least one name argument, all the named files are\ncompiled into the output file given as the first  argument.   If\nfile  does  not end in .zwc, this extension is automatically ap-\npended.  Files containing multiple compiled functions are called\n`digest'  files,  and are intended to be used as elements of the\nFPATH/fpath special array.\n\nThe second form, with the -c or -a options, writes the  compiled\ndefinitions  for all the named functions into file.  For -c, the\nnames must be functions currently  defined  in  the  shell,  not\nthose  marked  for  autoloading.   Undefined  functions that are\nmarked for autoloading may be written by using the -a option, in\nwhich case the fpath is searched and the contents of the defini-\ntion files for those functions,  if  found,  are  compiled  into\nfile.   If both -c and -a are given, names of both defined func-\ntions and functions marked for autoloading may be given.  In ei-\nther  case, the functions in files written with the -c or -a op-\ntion will be autoloaded as if the KSHAUTOLOAD option  were  un-\nset.\n\nThe reason for handling loaded and not-yet-loaded functions with\ndifferent options is that some definition files for  autoloading\ndefine  multiple functions, including the function with the same\nname as the file, and, at the end, call that function.  In  such\ncases  the  output  of  `zcompile -c' does not include the addi-\ntional functions defined in the file, and any other  initializa-\ntion code in the file is lost.  Using `zcompile -a' captures all\nthis extra information.\n\nIf the -m option is combined with -c or -a, the names  are  used\nas  patterns  and  all  functions whose names match one of these\npatterns will be written. If no name is given,  the  definitions\nof  all functions currently defined or marked as autoloaded will\nbe written.\n\nNote the second form cannot be used for compiling functions that\ninclude  redirections  as  part  of  the  definition rather than\nwithin the body of the function; for example\n\nfn1() { { ... } >~/logfile }\n\ncan be compiled but\n\nfn1() { ... } >~/logfile\n\ncannot.  It is possible to use the first  form  of  zcompile  to\ncompile  autoloadable  functions  that include the full function\ndefinition instead of just the body of the function.\n\nThe third form, with the -t option, examines  an  existing  com-\npiled  file.  Without further arguments, the names of the origi-\nnal files compiled into it are listed.  The first line of output\nshows  the  version of the shell which compiled the file and how\nthe file will be used (i.e. by reading it directly or by mapping\nit  into memory).  With arguments, nothing is output and the re-\nturn status is set to zero if definitions  for  all  names  were\nfound  in  the compiled file, and non-zero if the definition for\nat least one name was not found.\n\nOther options:\n\n-U     Aliases are not expanded when compiling the named files.\n\n-R     When the compiled file is read, its contents  are  copied\ninto  the  shell's memory, rather than memory-mapped (see\n-M).  This happens automatically on systems that  do  not\nsupport memory mapping.\n\nWhen compiling scripts instead of autoloadable functions,\nit is often desirable to use this option;  otherwise  the\nwhole  file, including the code to define functions which\nhave already been defined,  will  remain  mapped,  conse-\nquently wasting memory.\n\n-M     The  compiled file is mapped into the shell's memory when\nread. This is done in such a way that multiple  instances\nof  the  shell  running  on the same host will share this\nmapped file.  If neither -R nor -M is given, the zcompile\nbuiltin  decides what to do based on the size of the com-\npiled file.\n\n-k\n-z     These options are used when the  compiled  file  contains\nfunctions which are to be autoloaded. If -z is given, the\nfunction will be autoloaded as if the KSHAUTOLOAD option\nis  not  set,  even if it is set at the time the compiled\nfile is read, while if the -k is given, the function will\nbe  loaded as if KSHAUTOLOAD is set.  These options also\ntake precedence over any -k or -z  options  specified  to\nthe  autoload  builtin.  If  neither  of these options is\ngiven, the function will be loaded as determined  by  the\nsetting  of  the KSHAUTOLOAD option at the time the com-\npiled file is read.\n\nThese options may also appear as many times as  necessary\nbetween  the listed names to specify the loading style of\nall following functions, up to the next -k or -z.\n\nThe created file always contains two versions of the com-\npiled  format,  one  for  big-endian machines and one for\nsmall-endian machines.  The upshot of this  is  that  the\ncompiled file is machine independent and if it is read or\nmapped, only one half of the file is actually  used  (and\nmapped).\n\nzformat\nSee the section `The zsh/zutil Module' in zshmodules(1).\n\nzftp   See the section `The zsh/zftp Module' in zshmodules(1).\n\nzle    See the section `Zle Builtins' in zshzle(1).\n\nzmodload [ -dL ] [ -s ] [ ... ]\nzmodload -F [ -alLme -P param ] module [ [+-]feature ... ]\nzmodload -e [ -A ] [ ... ]\nzmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ...\nzmodload -u [ -abcdpf [ -I ] ] [ -iL ] ...\nzmodload -A [ -L ] [ modalias[=module] ... ]\nzmodload -R modalias ...\nPerforms operations relating to zsh's loadable modules.  Loading\nof modules while the shell is running (`dynamical  loading')  is\nnot  available on all operating systems, or on all installations\non a particular operating system, although the zmodload  command\nitself is always available and can be used to manipulate modules\nbuilt into versions of the shell  executable  without  dynamical\nloading.\n\nWithout  arguments the names of all currently loaded binary mod-\nules are printed.  The -L option causes this list to be  in  the\nform  of  a  series  of zmodload commands.  Forms with arguments\nare:\n\nzmodload [ -is ] name ...\nzmodload -u [ -i ] name ...\nIn the simplest case, zmodload  loads  a  binary  module.\nThe  module  must  be in a file with a name consisting of\nthe specified name followed by a standard suffix, usually\n`.so' (`.sl' on HPUX).  If the module to be loaded is al-\nready loaded the duplicate module is ignored.   If  zmod-\nload  detects an inconsistency, such as an invalid module\nname or circular dependency list, the current code  block\nis  aborted.  If it is available, the module is loaded if\nnecessary, while if it is not available, non-zero  status\nis silently returned.  The option -i is accepted for com-\npatibility but has no effect.\n\nThe named module is searched for in the same way  a  com-\nmand  is,  using $modulepath instead of $path.  However,\nthe path search is performed even when  the  module  name\ncontains  a  `/', which it usually does.  There is no way\nto prevent the path search.\n\nIf the module supports  features  (see  below),  zmodload\ntries  to  enable all features when loading a module.  If\nthe module was successfully loaded but not  all  features\ncould be enabled, zmodload returns status 2.\n\nIf  the  option  -s  is given, no error is printed if the\nmodule was not available (though other errors  indicating\na  problem with the module are printed).  The return sta-\ntus indicates if the module was loaded.  This  is  appro-\npriate if the caller considers the module optional.\n\nWith -u, zmodload unloads modules.  The same name must be\ngiven that was given when the module was loaded,  but  it\nis not necessary for the module to exist in the file sys-\ntem.  The -i option suppresses the error if the module is\nalready unloaded (or was never loaded).\n\nEach  module has a boot and a cleanup function.  The mod-\nule will not be loaded if its boot function fails.  Simi-\nlarly  a module can only be unloaded if its cleanup func-\ntion runs successfully.\n\nzmodload -F [ -almLe -P param ] module [ [+-]feature ... ]\nzmodload -F allows more selective control over  the  fea-\ntures  provided  by  modules.  With no options apart from\n-F, the module named module is loaded, if it was not  al-\nready  loaded, and the list of features is set to the re-\nquired state.  If no features are specified,  the  module\nis loaded, if it was not already loaded, but the state of\nfeatures is unchanged.  Each feature may be preceded by a\n+  to  turn the feature on, or - to turn it off; the + is\nassumed if neither character is present.  Any feature not\nexplicitly mentioned is left in its current state; if the\nmodule was not previously loaded this means any such fea-\ntures will remain disabled.  The return status is zero if\nall features were set, 1 if the module  failed  to  load,\nand  2  if some features could not be set (for example, a\nparameter couldn't be added because there was a different\nparameter of the same name) but the module was loaded.\n\nThe  standard  features are builtins, conditions, parame-\nters and math functions; these are indicated by the  pre-\nfix  `b:',  `c:'  (`C:' for an infix condition), `p:' and\n`f:', respectively, followed by the name that the  corre-\nsponding  feature  would have in the shell.  For example,\n`b:strftime'  indicates  a  builtin  named  strftime  and\np:EPOCHSECONDS  indicates a parameter named EPOCHSECONDS.\nThe module may provide other (`abstract') features of its\nown as indicated by its documentation; these have no pre-\nfix.\n\nWith -l or  -L,  features  provided  by  the  module  are\nlisted.   With -l alone, a list of features together with\ntheir states is shown, one feature  per  line.   With  -L\nalone,  a  zmodload  -F  command that would cause enabled\nfeatures of the module to be turned on  is  shown.   With\n-lL,  a zmodload -F command that would cause all the fea-\ntures to be set to their current state is shown.  If  one\nof  these  combinations is given with the option -P param\nthen the parameter param is set to an array of  features,\neither features together with their state or (if -L alone\nis given) enabled features.\n\nWith the option -L the module name may be omitted; then a\nlist  of  all  enabled features for all modules providing\nfeatures is printed in the form of zmodload -F  commands.\nIf  -l  is also given, the state of both enabled and dis-\nabled features is output in that form.\n\nA set of features may be provided together with -l or  -L\nand  a  module name; in that case only the state of those\nfeatures is considered.  Each feature may be preceded  by\n+  or  -  but  the character has no effect.  If no set of\nfeatures is provided, all features are considered.\n\nWith -e, the command  first  tests  that  the  module  is\nloaded;  if it is not, status 1 is returned.  If the mod-\nule is loaded, the list of features given as an  argument\nis  examined.  Any feature given with no prefix is simply\ntested to see if the  module  provides  it;  any  feature\ngiven  with  a  prefix + or - is tested to see if is pro-\nvided and in the given state.  If the tests on  all  fea-\ntures  in  the  list  succeed, status 0 is returned, else\nstatus 1.\n\nWith -m, each entry in the  given  list  of  features  is\ntaken as a pattern to be matched against the list of fea-\ntures provided by the module.  An initial + or - must  be\ngiven  explicitly.   This may not be combined with the -a\noption as autoloads must be specified explicitly.\n\nWith -a, the given list of features  is  marked  for  au-\ntoload  from  the  specified module, which may not yet be\nloaded.  An optional +  may  appear  before  the  feature\nname.   If  the  feature is prefixed with -, any existing\nautoload is removed.  The options -l and -L may  be  used\nto list autoloads.  Autoloading is specific to individual\nfeatures; when the module is loaded  only  the  requested\nfeature  is  enabled.  Autoload requests are preserved if\nthe module is subsequently  unloaded  until  an  explicit\n`zmodload  -Fa  module -feature' is issued.  It is not an\nerror to request an autoload for a feature  of  a  module\nthat is already loaded.\n\nWhen  the  module  is  loaded  each  autoload  is checked\nagainst the features actually provided by the module;  if\nthe  feature  is  not  provided  the  autoload request is\ndeleted.  A warning message is output; if the  module  is\nbeing loaded to provide a different feature, and that au-\ntoload is successful, there is no effect on the status of\nthe  current command.  If the module is already loaded at\nthe time when zmodload -Fa is run, an  error  message  is\nprinted and status 1 returned.\n\nzmodload  -Fa  can be used with the -l, -L, -e and -P op-\ntions for listing and testing the existence of  autoload-\nable features.  In this case -l is ignored if -L is spec-\nified.  zmodload -FaL with no module name lists autoloads\nfor all modules.\n\nNote  that  only standard features as described above can\nbe autoloaded; other features require the  module  to  be\nloaded before enabling.\n\nzmodload -d [ -L ] [ name ]\nzmodload -d name dep ...\nzmodload -ud name [ dep ... ]\nThe -d option can be used to specify module dependencies.\nThe modules named in the second and subsequent  arguments\nwill be loaded before the module named in the first argu-\nment.\n\nWith -d and one argument, all dependencies for that  mod-\nule are listed.  With -d and no arguments, all module de-\npendencies are listed.  This listing is by default  in  a\nMakefile-like  format.  The -L option changes this format\nto a list of zmodload -d commands.\n\nIf -d and -u are both used, dependencies are removed.  If\nonly  one  argument  is  given, all dependencies for that\nmodule are removed.\n\nzmodload -ab [ -L ]\nzmodload -ab [ -i ] name [ builtin ... ]\nzmodload -ub [ -i ] builtin ...\nThe -ab option defines autoloaded builtins.   It  defines\nthe  specified  builtins.   When any of those builtins is\ncalled, the module specified in  the  first  argument  is\nloaded  and  all  its features are enabled (for selective\ncontrol of features use `zmodload  -F  -a'  as  described\nabove).   If  only  the name is given, one builtin is de-\nfined, with the same name as the module.   -i  suppresses\nthe  error  if  the  builtin  is  already  defined or au-\ntoloaded, but not if another builtin of the same name  is\nalready defined.\n\nWith  -ab  and  no arguments, all autoloaded builtins are\nlisted, with the module  name  (if  different)  shown  in\nparentheses  after  the  builtin  name.   The  -L  option\nchanges this format to a list of zmodload -a commands.\n\nIf -b is used together with the  -u  option,  it  removes\nbuiltins  previously defined with -ab.  This is only pos-\nsible if the builtin is not yet  loaded.   -i  suppresses\nthe error if the builtin is already removed (or never ex-\nisted).\n\nAutoload requests are retained if the  module  is  subse-\nquently unloaded until an explicit `zmodload -ub builtin'\nis issued.\n\nzmodload -ac [ -IL ]\nzmodload -ac [ -iI ] name [ cond ... ]\nzmodload -uc [ -iI ] cond ...\nThe -ac option is used  to  define  autoloaded  condition\ncodes.  The cond strings give the names of the conditions\ndefined by the module. The optional -I option is used  to\ndefine  infix condition names. Without this option prefix\ncondition names are defined.\n\nIf given no condition names, all defined names are listed\n(as  a  series  of  zmodload commands if the -L option is\ngiven).\n\nThe -uc option removes definitions for autoloaded  condi-\ntions.\n\nzmodload -ap [ -L ]\nzmodload -ap [ -i ] name [ parameter ... ]\nzmodload -up [ -i ] parameter ...\nThe  -p  option  is like the -b and -c options, but makes\nzmodload work on autoloaded parameters instead.\n\nzmodload -af [ -L ]\nzmodload -af [ -i ] name [ function ... ]\nzmodload -uf [ -i ] function ...\nThe -f option is like the -b, -p,  and  -c  options,  but\nmakes zmodload work on autoloaded math functions instead.\n\nzmodload -a [ -L ]\nzmodload -a [ -i ] name [ builtin ... ]\nzmodload -ua [ -i ] builtin ...\nEquivalent to -ab and -ub.\n\nzmodload -e [ -A ] [ string ... ]\nThe -e option without arguments lists all loaded modules;\nif the -A option is also  given,  module  aliases  corre-\nsponding  to loaded modules are also shown.  If arguments\nare provided, nothing is printed; the  return  status  is\nset  to  zero if all strings given as arguments are names\nof loaded modules and to one if at least on string is not\nthe  name  of  a loaded module.  This can be used to test\nfor the availability of things  implemented  by  modules.\nIn  this case, any aliases are automatically resolved and\nthe -A flag is not used.\n\nzmodload -A [ -L ] [ modalias[=module] ... ]\nFor each argument, if both modalias and module are given,\ndefine modalias to be an alias for the module module.  If\nthe module modalias is ever subsequently  requested,  ei-\nther via a call to zmodload or implicitly, the shell will\nattempt to load module instead.  If module is not  given,\nshow  the  definition  of  modalias.  If no arguments are\ngiven, list all defined module aliases.  When listing, if\nthe  -L  flag  was  also  given, list the definition as a\nzmodload command to recreate the alias.\n\nThe existence of aliases for modules is completely  inde-\npendent  of  whether the name resolved is actually loaded\nas a module: while the alias exists, loading and  unload-\ning  the  module under any alias has exactly the same ef-\nfect as using the resolved name, and does not affect  the\nconnection  between the alias and the resolved name which\ncan be removed either by zmodload -R or by redefining the\nalias.   Chains of aliases (i.e. where the first resolved\nname is itself an alias) are valid so long as  these  are\nnot  circular.   As  the  aliases take the same format as\nmodule names, they may include path separators:  in  this\ncase,  there  is  no requirement for any part of the path\nnamed to exist as the alias will be resolved first.   For\nexample, `any/old/alias' is always a valid alias.\n\nDependencies  added to aliased modules are actually added\nto the resolved module; these remain if the alias is  re-\nmoved.   It is valid to create an alias whose name is one\nof the standard shell modules and  which  resolves  to  a\ndifferent module.  However, if a module has dependencies,\nit will not be possible to use  the  module  name  as  an\nalias  as the module will already be marked as a loadable\nmodule in its own right.\n\nApart from the above, aliases can be used in the zmodload\ncommand  anywhere  module  names  are required.  However,\naliases will not be shown in lists of loaded modules with\na bare `zmodload'.\n\nzmodload -R modalias ...\nFor each modalias argument that was previously defined as\na module alias via zmodload -A, delete the alias.  If any\nwas  not defined, an error is caused and the remainder of\nthe line is ignored.\n\nNote that zsh makes no distinction  between  modules  that  were\nlinked  into  the shell and modules that are loaded dynamically.\nIn both cases this builtin command has to be used to make avail-\nable  the  builtins  and other things defined by modules (unless\nthe module is autoloaded on these  definitions).  This  is  true\neven for systems that don't support dynamic loading of modules.\n\nzparseopts\nSee the section `The zsh/zutil Module' in zshmodules(1).\n\nzprof  See the section `The zsh/zprof Module' in zshmodules(1).\n\nzpty   See the section `The zsh/zpty Module' in zshmodules(1).\n\nzregexparse\nSee the section `The zsh/zutil Module' in zshmodules(1).\n\nzsocket\nSee the section `The zsh/net/socket Module' in zshmodules(1).\n\nzstyle See the section `The zsh/zutil Module' in zshmodules(1).\n\nztcp   See the section `The zsh/net/tcp Module' in zshmodules(1).\n\nzsh 5.8.1                      February 12, 2022                ZSHBUILTINS(1)",
                "subsections": []
            }
        }
    }
}