{
    "content": [
        {
            "type": "text",
            "text": "# zshoptions (info)\n\n## NAME\n\nzshoptions - zsh options\n\n## Sections\n\n- **NAME**\n- **SPECIFYING OPTIONS**\n- **DESCRIPTION OF OPTIONS**\n- **OPTION ALIASES**\n- **SINGLE LETTER OPTIONS**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "zshoptions",
        "section": "",
        "mode": "info",
        "summary": "zshoptions - zsh options",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SPECIFYING OPTIONS",
                "lines": 29,
                "subsections": []
            },
            {
                "name": "DESCRIPTION OF OPTIONS",
                "lines": 1513,
                "subsections": []
            },
            {
                "name": "OPTION ALIASES",
                "lines": 38,
                "subsections": []
            },
            {
                "name": "SINGLE LETTER OPTIONS",
                "lines": 85,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "zshoptions - zsh options\n",
                "subsections": []
            },
            "SPECIFYING OPTIONS": {
                "content": "Options are primarily referred to by name.  These names are case insen-\nsitive and underscores are ignored.  For example, `allexport' is equiv-\nalent to `AlleXPort'.\n\nThe  sense of an option name may be inverted by preceding it with `no',\nso `setopt NoBeep' is equivalent to `unsetopt beep'.   This  inversion\ncan only be done once, so `nonobeep' is not a synonym for `beep'.  Sim-\nilarly, `tify' is not a synonym for `nonotify' (the inversion  of  `no-\ntify').\n\nSome  options also have one or more single letter names.  There are two\nsets of single letter options: one used by default, and another used to\nemulate  sh/ksh  (used  when the SHOPTIONLETTERS option is set).  The\nsingle letter options can be used on the shell command  line,  or  with\nthe  set, setopt and unsetopt builtins, as normal Unix options preceded\nby `-'.\n\nThe sense of the single letter options may be inverted by using `+' in-\nstead  of  `-'.  Some of the single letter option names refer to an op-\ntion being off, in which case the inversion of that name refers to  the\noption  being  on.   For example, `+n' is the short name of `exec', and\n`-n' is the short name of its inversion, `noexec'.\n\nIn strings of single letter options supplied to the shell  at  startup,\ntrailing  whitespace  will  be ignored; for example the string `-f    '\nwill be treated just as `-f', but the string `-f i' is an error.   This\nis  because many systems which implement the `#!' mechanism for calling\nscripts do not strip trailing whitespace.\n",
                "subsections": []
            },
            "DESCRIPTION OF OPTIONS": {
                "content": "In the following list, options set by default  in  all  emulations  are\nmarked  <D>;  those  set by default only in csh, ksh, sh, or zsh emula-\ntions are marked <C>, <K>, <S>, <Z> as appropriate.  When  listing  op-\ntions  (by `setopt', `unsetopt', `set -o' or `set +o'), those turned on\nby default appear in  the  list  prefixed  with  `no'.   Hence  (unless\nKSHOPTIONPRINT is set), `setopt' shows all options whose settings are\nchanged from the default.\n\nChanging Directories\nAUTOCD (-J)\nIf a command is issued that can't be executed as a  normal  com-\nmand, and the command is the name of a directory, perform the cd\ncommand to that directory.  This option is  only  applicable  if\nthe  option  SHINSTDIN  is set, i.e. if commands are being read\nfrom standard input.  The option  is  designed  for  interactive\nuse;  it is recommended that cd be used explicitly in scripts to\navoid ambiguity.\n\nAUTOPUSHD (-N)\nMake cd push the old directory onto the directory stack.\n\nCDABLEVARS (-T)\nIf the argument to a cd command  (or  an  implied  cd  with  the\nAUTOCD  option set) is not a directory, and does not begin with\na slash, try to expand the expression as if it were preceded  by\na `~' (see the section `Filename Expansion').\n\nCDSILENT\nNever  print  the working directory after a cd (whether explicit\nor implied with the AUTOCD option set). cd normally prints  the\nworking  directory  when the argument given to it was -, a stack\nentry, or the name of a directory found under CDPATH. Note  that\nthis is distinct from pushd's stack-printing behaviour, which is\ncontrolled by PUSHDSILENT. This  option  overrides  the  print-\ning-related effects of POSIXCD.\n\nCHASEDOTS\nWhen  changing  to  a  directory  containing a path segment `..'\nwhich would otherwise be treated as canceling the previous  seg-\nment in the path (in other words, `foo/..' would be removed from\nthe path, or if `..' is the first part of  the  path,  the  last\npart of the current working directory would be removed), instead\nresolve the path to the  physical  directory.   This  option  is\noverridden by CHASELINKS.\n\nFor  example,  suppose  /foo/bar  is  a  link  to  the directory\n/alt/rod.  Without this option set, `cd /foo/bar/..' changes  to\n/foo;  with it set, it changes to /alt.  The same applies if the\ncurrent directory is /foo/bar and `cd ..' is  used.   Note  that\nall other symbolic links in the path will also be resolved.\n\nCHASELINKS (-w)\nResolve symbolic links to their true values when changing direc-\ntory.  This also has the effect of CHASEDOTS, i.e. a `..'  path\nsegment  will  be  treated  as referring to the physical parent,\neven if the preceding path segment is a symbolic link.\n\nPOSIXCD <K> <S>\nModifies the behaviour of cd, chdir and pushd commands  to  make\nthem more compatible with the POSIX standard. The behaviour with\nthe option unset is described in the documentation  for  the  cd\nbuiltin in zshbuiltins(1).  If the option is set, the shell does\nnot test for directories beneath the local directory (`.') until\nafter all directories in cdpath have been tested, and the cd and\nchdir commands do not recognise arguments of the  form  `{+|-}n'\nas directory stack entries.\n\nAlso, if the option is set, the conditions under which the shell\nprints the new directory after changing to it are modified.   It\nis no longer restricted to interactive shells (although printing\nof the directory stack with pushd is still limited  to  interac-\ntive  shells); and any use of a component of CDPATH, including a\n`.' but excluding an empty component that is  otherwise  treated\nas `.', causes the directory to be printed.\n\nPUSHDIGNOREDUPS\nDon't push multiple copies of the same directory onto the direc-\ntory stack.\n\nPUSHDMINUS\nExchanges the meanings of `+' and `-' when used with a number to\nspecify a directory in the stack.\n\nPUSHDSILENT (-E)\nDo not print the directory stack after pushd or popd.\n\nPUSHDTOHOME (-D)\nHave pushd with no arguments act like `pushd $HOME'.\n\nCompletion\nALWAYSLASTPROMPT <D>\nIf  unset,  key functions that list completions try to return to\nthe last prompt if given a numeric argument. If set these  func-\ntions try to return to the last prompt if given no numeric argu-\nment.\n\nALWAYSTOEND\nIf a completion is performed with the cursor within a word,  and\na full completion is inserted, the cursor is moved to the end of\nthe word.  That is, the cursor is moved to the end of  the  word\nif  either a single match is inserted or menu completion is per-\nformed.\n\nAUTOLIST (-9) <D>\nAutomatically list choices on an ambiguous completion.\n\nAUTOMENU <D>\nAutomatically use menu completion after the  second  consecutive\nrequest  for completion, for example by pressing the tab key re-\npeatedly. This option is overridden by MENUCOMPLETE.\n\nAUTONAMEDIRS\nAny parameter that is set to the absolute name  of  a  directory\nimmediately becomes a name for that directory, that will be used\nby the `%~' and related prompt sequences, and will be  available\nwhen completion is performed on a word starting with `~'.  (Oth-\nerwise, the parameter must be used in the form `~param' first.)\n\nAUTOPARAMKEYS <D>\nIf a parameter name was  completed  and  a  following  character\n(normally  a space) automatically inserted, and the next charac-\nter typed is one of those that have to come directly  after  the\nname (like `}', `:', etc.), the automatically added character is\ndeleted, so that the character typed comes immediately after the\nparameter  name.   Completion  in  a brace expansion is affected\nsimilarly: the added character is a `,', which will  be  removed\nif `}' is typed next.\n\nAUTOPARAMSLASH <D>\nIf  a  parameter is completed whose content is the name of a di-\nrectory, then add a trailing slash instead of a space.\n\nAUTOREMOVESLASH <D>\nWhen the last character resulting from a completion is  a  slash\nand  the next character typed is a word delimiter, a slash, or a\ncharacter that ends a command (such as a semicolon or an  amper-\nsand), remove the slash.\n\nBASHAUTOLIST\nOn  an ambiguous completion, automatically list choices when the\ncompletion function is called twice in succession.   This  takes\nprecedence over AUTOLIST.  The setting of LISTAMBIGUOUS is re-\nspected.  If AUTOMENU is set,  the  menu  behaviour  will  then\nstart  with  the third press.  Note that this will not work with\nMENUCOMPLETE, since repeated completion calls immediately cycle\nthrough the list in that case.\n\nCOMPLETEALIASES\nPrevents  aliases on the command line from being internally sub-\nstituted before completion is attempted.  The effect is to  make\nthe alias a distinct command for completion purposes.\n\nCOMPLETEINWORD\nIf unset, the cursor is set to the end of the word if completion\nis started. Otherwise it stays there and completion is done from\nboth ends.\n\nGLOBCOMPLETE\nWhen  the current word has a glob pattern, do not insert all the\nwords resulting from the expansion but generate matches  as  for\ncompletion  and  cycle  through  them  like  MENUCOMPLETE.  The\nmatches are generated as if a `*' was added to the  end  of  the\nword,  or  inserted  at the cursor when COMPLETEINWORD is set.\nThis actually uses pattern matching, not globbing, so  it  works\nnot only for files but for any completion, such as options, user\nnames, etc.\n\nNote that when the pattern matcher  is  used,  matching  control\n(for  example,  case-insensitive or anchored matching) cannot be\nused.  This limitation only applies when the current  word  con-\ntains a pattern; simply turning on the GLOBCOMPLETE option does\nnot have this effect.\n\nHASHLISTALL <D>\nWhenever a command completion  or  spelling  correction  is  at-\ntempted,  make  sure  the  entire  command path is hashed first.\nThis makes the first completion slower but avoids false  reports\nof spelling errors.\n\nLISTAMBIGUOUS <D>\nThis  option works when AUTOLIST or BASHAUTOLIST is also set.\nIf there is an unambiguous prefix to insert on the command line,\nthat is done without a completion list being displayed; in other\nwords, auto-listing behaviour  only  takes  place  when  nothing\nwould  be  inserted.   In the case of BASHAUTOLIST, this means\nthat the list will be delayed to the third call of the function.\n\nLISTBEEP <D>\nBeep on an ambiguous completion.  More accurately,  this  forces\nthe  completion  widgets to return status 1 on an ambiguous com-\npletion, which causes the shell to beep if the  option  BEEP  is\nalso  set;  this  may be modified if completion is called from a\nuser-defined widget.\n\nLISTPACKED\nTry to make the completion list smaller (occupying  less  lines)\nby printing the matches in columns with different widths.\n\nLISTROWSFIRST\nLay  out  the  matches  in completion lists sorted horizontally,\nthat is, the second match is to the right of the first one,  not\nunder it as usual.\n\nLISTTYPES (-X) <D>\nWhen  listing files that are possible completions, show the type\nof each file with a trailing identifying mark.\n\nMENUCOMPLETE (-Y)\nOn an ambiguous completion, instead of listing possibilities  or\nbeeping,  insert the first match immediately.  Then when comple-\ntion is requested again, remove the first match and  insert  the\nsecond  match,  etc.  When there are no more matches, go back to\nthe first one again.  reverse-menu-complete may be used to  loop\nthrough  the  list in the other direction. This option overrides\nAUTOMENU.\n\nRECEXACT (-S)\nIf the string on the command line exactly  matches  one  of  the\npossible  completions,  it is accepted, even if there is another\ncompletion (i.e. that string with  something  else  added)  that\nalso matches.\n\nExpansion and Globbing\nBADPATTERN (+2) <C> <Z>\nIf  a  pattern for filename generation is badly formed, print an\nerror message.  (If this option is unset, the  pattern  will  be\nleft unchanged.)\n\nBAREGLOBQUAL <Z>\nIn  a  glob  pattern,  treat  a trailing set of parentheses as a\nqualifier list, if it contains no `|', `(' or (if  special)  `~'\ncharacters.  See the section `Filename Generation'.\n\nBRACECCL\nExpand  expressions  in braces which would not otherwise undergo\nbrace expansion to a lexically ordered list of all  the  charac-\nters.  See the section `Brace Expansion'.\n\nCASEGLOB <D>\nMake  globbing  (filename  generation)  sensitive to case.  Note\nthat other uses of patterns are always sensitive  to  case.   If\nthe option is unset, the presence of any character which is spe-\ncial to filename generation will cause  case-insensitive  match-\ning.   For  example, cvs(/) can match the directory CVS owing to\nthe  presence  of  the  globbing   flag   (unless   the   option\nBAREGLOBQUAL is unset).\n\nCASEMATCH <D>\nMake  regular  expressions using the zsh/regex module (including\nmatches with =~) sensitive to case.\n\nCSHNULLGLOB <C>\nIf a pattern for filename generation has no matches, delete  the\npattern  from  the  argument list; do not report an error unless\nall the patterns in a command have no  matches.   Overrides  NO-\nMATCH.\n\nEQUALS <Z>\nPerform = filename expansion.  (See the section `Filename Expan-\nsion'.)\n\nEXTENDEDGLOB\nTreat the `#', `~' and `^' characters as part  of  patterns  for\nfilename  generation, etc.  (An initial unquoted `~' always pro-\nduces named directory expansion.)\n\nFORCEFLOAT\nConstants in arithmetic evaluation will be treated  as  floating\npoint even without the use of a decimal point; the values of in-\nteger variables will be converted to floating point when used in\narithmetic expressions.  Integers in any base will be converted.\n\nGLOB (+F, ksh: +f) <D>\nPerform filename generation (globbing).  (See the section `File-\nname Generation'.)\n\nGLOBASSIGN <C>\nIf this option is set, filename generation  (globbing)  is  per-\nformed on the right hand side of scalar parameter assignments of\nthe form `name=pattern (e.g. `foo=*').  If the result  has  more\nthan  one  word  the  parameter  will become an array with those\nwords as arguments. This option is provided for  backwards  com-\npatibility  only: globbing is always performed on the right hand\nside of array  assignments  of  the  form  `name=(value)'  (e.g.\n`foo=(*)')  and  this form is recommended for clarity; with this\noption set, it is not possible to  predict  whether  the  result\nwill be an array or a scalar.\n\nGLOBDOTS (-4)\nDo not require a leading `.' in a filename to be matched explic-\nitly.\n\nGLOBSTARSHORT\nWhen this option is set and the default zsh-style globbing is in\neffect,  the  pattern  `/*' can be abbreviated to `' and the\npattern `*/*' can be abbreviated to *.  Hence `.c' finds a\nfile ending in .c in any subdirectory, and `*.c' does the same\nwhile also following symbolic links.  A / immediately after  the\n`' or `*' forces the pattern to be treated as the unabbrevi-\nated form.\n\nGLOBSUBST <C> <K> <S>\nTreat any characters resulting from parameter expansion as being\neligible for filename expansion and filename generation, and any\ncharacters resulting from command substitution as being eligible\nfor  filename generation.  Braces (and commas in between) do not\nbecome eligible for expansion.\n\nHISTSUBSTPATTERN\nSubstitutions using the :s and :&  history  modifiers  are  per-\nformed  with  pattern matching instead of string matching.  This\noccurs wherever history  modifiers  are  valid,  including  glob\nqualifiers  and  parameters.   See the section Modifiers in zsh-\nexpn(1).\n\nIGNOREBRACES (-I) <S>\nDo not perform brace expansion.   For  historical  reasons  this\nalso includes the effect of the IGNORECLOSEBRACES option.\n\nIGNORECLOSEBRACES\nWhen  neither this option nor IGNOREBRACES is set, a sole close\nbrace character `}' is syntactically significant at any point on\na  command  line.  This has the effect that no semicolon or new-\nline is necessary before the brace  terminating  a  function  or\ncurrent  shell  construct.  When either option is set, a closing\nbrace is syntactically significant  only  in  command  position.\nUnlike  IGNOREBRACES, this option does not disable brace expan-\nsion.\n\nFor example, with both options unset a function may  be  defined\nin the following fashion:\n\nargs() { echo $# }\n\nwhile  if either option is set, this does not work and something\nequivalent to the following is required:\n\nargs() { echo $#; }\n\nKSHGLOB <K>\nIn pattern matching, the interpretation of  parentheses  is  af-\nfected  by  a preceding `@', `*', `+', `?' or `!'.  See the sec-\ntion `Filename Generation'.\n\nMAGICEQUALSUBST\nAll unquoted arguments of the form `anything=expression' appear-\ning  after  the  command  name have filename expansion (that is,\nwhere expression has a leading `~' or `=') performed on  expres-\nsion  as if it were a parameter assignment.  The argument is not\notherwise treated specially; it is passed to the  command  as  a\nsingle argument, and not used as an actual parameter assignment.\nFor example, in echo  foo=~/bar:~/rod,  both  occurrences  of  ~\nwould  be  replaced.  Note that this happens anyway with typeset\nand similar statements.\n\nThis option respects the setting of the KSHTYPESET option.   In\nother  words,  if  both options are in effect, arguments looking\nlike assignments will not undergo word splitting.\n\nMARKDIRS (-8, ksh: -X)\nAppend a trailing `/' to  all  directory  names  resulting  from\nfilename generation (globbing).\n\nMULTIBYTE <D>\nRespect  multibyte  characters when found in strings.  When this\noption is set, strings are examined using the system library  to\ndetermine how many bytes form a character, depending on the cur-\nrent locale.  This affects the way  characters  are  counted  in\npattern matching, parameter values and various delimiters.\n\nThe  option  is  on  by  default  if the shell was compiled with\nMULTIBYTESUPPORT; otherwise it is off by default and has no ef-\nfect if turned on.\n\nIf the option is off a single byte is always treated as a single\ncharacter.   This  setting  is  designed  purely  for  examining\nstrings  known to contain raw bytes or other values that may not\nbe characters in the current locale.  It is not necessary to un-\nset  the option merely because the character set for the current\nlocale does not contain multibyte characters.\n\nThe option does not affect the  shell's  editor,   which  always\nuses  the locale to determine multibyte characters.  This is be-\ncause the character set displayed by the  terminal  emulator  is\nindependent of shell settings.\n\nNOMATCH (+3) <C> <Z>\nIf  a  pattern  for filename generation has no matches, print an\nerror, instead of leaving it unchanged  in  the  argument  list.\nThis also applies to file expansion of an initial `~' or `='.\n\nNULLGLOB (-G)\nIf  a pattern for filename generation has no matches, delete the\npattern from the argument list instead of  reporting  an  error.\nOverrides NOMATCH.\n\nNUMERICGLOBSORT\nIf  numeric  filenames are matched by a filename generation pat-\ntern, sort the filenames numerically rather  than  lexicographi-\ncally.\n\nRCEXPANDPARAM (-P)\nArray  expansions of the form `foo${xx}bar', where the parameter\nxx is set to (a b c),  are  substituted  with  `fooabar  foobbar\nfoocbar'  instead  of  the  default `fooa b cbar'.  Note that an\nempty array will therefore cause all arguments to be removed.\n\nREMATCHPCRE\nIf set, regular expression matching with the  =~  operator  will\nuse  Perl-Compatible  Regular Expressions from the PCRE library.\n(The zsh/pcre module must be available.)  If  not  set,  regular\nexpressions  will use the extended regexp syntax provided by the\nsystem libraries.\n\nSHGLOB <K> <S>\nDisables the special meaning of `(', `|', `)' and '<' for  glob-\nbing  the  result of parameter and command substitutions, and in\nsome other places where the shell accepts patterns.  If  SHGLOB\nis  set but KSHGLOB is not, the shell allows the interpretation\nof subshell expressions enclosed in parentheses  in  some  cases\nwhere  there  is  no  space before the opening parenthesis, e.g.\n!(true) is interpreted as if there were a  space  after  the  !.\nThis option is set by default if zsh is invoked as sh or ksh.\n\nUNSET (+u, ksh: +u) <K> <S> <Z>\nTreat  unset parameters as if they were empty when substituting,\nand as if they were zero when reading their values in arithmetic\nexpansion  and  arithmetic commands.  Otherwise they are treated\nas an error.\n\nWARNCREATEGLOBAL\nPrint a warning message when a global parameter is created in  a\nfunction  by an assignment or in math context.  This often indi-\ncates that a parameter has  not  been  declared  local  when  it\nshould  have  been.   Parameters explicitly declared global from\nwithin a function using typeset -g do not cause a warning.  Note\nthat  there  is no warning when a local parameter is assigned to\nin a nested function, which may also indicate an error.\n\nWARNNESTEDVAR\nPrint a warning message when an existing parameter from  an  en-\nclosing  function  scope,  or global, is set in a function by an\nassignment or in math context.  Assignment to shell special  pa-\nrameters  does  not  cause  a warning.  This is the companion to\nWARNCREATEGLOBAL as in this case the warning is  only  printed\nwhen a parameter is not created.  Where possible, use of typeset\n-g to set the parameter suppresses the error, but note that this\nneeds  to  be used every time the parameter is set.  To restrict\nthe effect of this option to a single function scope, use `func-\ntions -W'.\n\nFor  example,  the following code produces a warning for the as-\nsignment inside the function nested as that overrides the  value\nwithin toplevel\n\ntoplevel() {\nlocal foo=\"in fn\"\nnested\n}\nnested() {\nfoo=\"in nested\"\n}\nsetopt warnnestedvar\ntoplevel\n\nHistory\nAPPENDHISTORY <D>\nIf  this  is set, zsh sessions will append their history list to\nthe history file, rather than replace it. Thus, multiple  paral-\nlel  zsh  sessions will all have the new entries from their his-\ntory lists added to the history file, in  the  order  that  they\nexit.  The file will still be periodically re-written to trim it\nwhen the number of lines grows 20% beyond the value specified by\n$SAVEHIST (see also the HISTSAVEBYCOPY option).\n\nBANGHIST (+K) <C> <Z>\nPerform textual history expansion, csh-style, treating the char-\nacter `!' specially.\n\nEXTENDEDHISTORY <C>\nSave each command's beginning timestamp (in  seconds  since  the\nepoch)  and  the duration (in seconds) to the history file.  The\nformat of this prefixed data is:\n\n`: <beginning time>:<elapsed seconds>;<command>'.\n\nHISTALLOWCLOBBER\nAdd `|' to output redirections in the history.  This allows his-\ntory references to clobber files even when CLOBBER is unset.\n\nHISTBEEP <D>\nBeep  in  ZLE  when  a widget attempts to access a history entry\nwhich isn't there.\n\nHISTEXPIREDUPSFIRST\nIf the internal history needs to be trimmed to add  the  current\ncommand  line, setting this option will cause the oldest history\nevent that has a duplicate to be lost  before  losing  a  unique\nevent  from  the  list.   You should be sure to set the value of\nHISTSIZE to a larger number than SAVEHIST in order to  give  you\nsome  room for the duplicated events, otherwise this option will\nbehave just like HISTIGNOREALLDUPS once the history fills  up\nwith unique events.\n\nHISTFCNTLLOCK\nWhen  writing  out  the history file, by default zsh uses ad-hoc\nfile locking to avoid known problems with locking on some  oper-\nating systems.  With this option locking is done by means of the\nsystem's fcntl call, where this method is available.  On  recent\noperating  systems  this may provide better performance, in par-\nticular avoiding history corruption when  files  are  stored  on\nNFS.\n\nHISTFINDNODUPS\nWhen  searching  for  history entries in the line editor, do not\ndisplay duplicates of a line previously found, even if  the  du-\nplicates are not contiguous.\n\nHISTIGNOREALLDUPS\nIf a new command line being added to the history list duplicates\nan older one, the older command is removed from the  list  (even\nif it is not the previous event).\n\nHISTIGNOREDUPS (-h)\nDo not enter command lines into the history list if they are du-\nplicates of the previous event.\n\nHISTIGNORESPACE (-g)\nRemove command lines from the history list when the first  char-\nacter  on  the  line  is  a  space,  or when one of the expanded\naliases contains a leading  space.   Only  normal  aliases  (not\nglobal  or  suffix  aliases) have this behaviour.  Note that the\ncommand lingers in the internal history until the  next  command\nis  entered before it vanishes, allowing you to briefly reuse or\nedit the line.  If you want to make it vanish right away without\nentering another command, type a space and press return.\n\nHISTLEXWORDS\nBy  default,  shell  history that is read in from files is split\ninto words on all white space.  This means that  arguments  with\nquoted  whitespace  are  not  correctly handled, with the conse-\nquence that references to words in history lines that have  been\nread  from  a  file may be inaccurate.  When this option is set,\nwords read in from a history file are divided up  in  a  similar\nfashion  to  normal  shell command line handling.  Although this\nproduces more accurately delimited words, if  the  size  of  the\nhistory file is large this can be slow.  Trial and error is nec-\nessary to decide.\n\nHISTNOFUNCTIONS\nRemove function definitions from the history  list.   Note  that\nthe function lingers in the internal history until the next com-\nmand is entered before it vanishes, allowing you to briefly  re-\nuse or edit the definition.\n\nHISTNOSTORE\nRemove  the  history  (fc -l) command from the history list when\ninvoked.  Note that the command lingers in the internal  history\nuntil  the  next command is entered before it vanishes, allowing\nyou to briefly reuse or edit the line.\n\nHISTREDUCEBLANKS\nRemove superfluous blanks from each command line being added  to\nthe history list.\n\nHISTSAVEBYCOPY <D>\nWhen  the  history  file  is re-written, we normally write out a\ncopy of the file named $HISTFILE.new and then rename it over the\nold  one.  However, if this option is unset, we instead truncate\nthe old history file and write out the new version in-place.  If\none  of  the  history-appending  options is enabled, this option\nonly has an effect when the enlarged history file  needs  to  be\nre-written  to  trim  it down to size.  Disable this only if you\nhave special needs, as doing so makes it possible to  lose  his-\ntory entries if zsh gets interrupted during the save.\n\nWhen  writing  out a copy of the history file, zsh preserves the\nold file's permissions and group information, but will refuse to\nwrite  out  a  new  file  if  it would change the history file's\nowner.\n\nHISTSAVENODUPS\nWhen writing out the history file, older commands that duplicate\nnewer ones are omitted.\n\nHISTVERIFY\nWhenever  the  user  enters a line with history expansion, don't\nexecute the line directly; instead,  perform  history  expansion\nand reload the line into the editing buffer.\n\nINCAPPENDHISTORY\nThis  option  works  like APPENDHISTORY except that new history\nlines are added to the $HISTFILE incrementally (as soon as  they\nare  entered),  rather  than waiting until the shell exits.  The\nfile will still be periodically re-written to trim it  when  the\nnumber  of  lines grows 20% beyond the value specified by $SAVE-\nHIST (see also the HISTSAVEBYCOPY option).\n\nINCAPPENDHISTORYTIME\nThis option is a variant of INCAPPENDHISTORY in  which,  where\npossible, the history entry is written out to the file after the\ncommand is finished, so that the time taken by  the  command  is\nrecorded  correctly in the history file in EXTENDEDHISTORY for-\nmat.  This means that the history entry will  not  be  available\nimmediately from other instances of the shell that are using the\nsame history file.\n\nThis option is only useful if INCAPPENDHISTORY and  SHAREHIS-\nTORY are turned off.  The three options should be considered mu-\ntually exclusive.\n\nSHAREHISTORY <K>\n\nThis option both imports new commands from the history file, and\nalso  causes  your  typed commands to be appended to the history\nfile (the latter is like  specifying  INCAPPENDHISTORY,  which\nshould  be turned off if this option is in effect).  The history\nlines are  also  output  with  timestamps  ala  EXTENDEDHISTORY\n(which  makes it easier to find the spot where we left off read-\ning the file after it gets re-written).\n\nBy default, history movement commands visit the  imported  lines\nas  well  as the local lines, but you can toggle this on and off\nwith the set-local-history zle binding.  It is also possible  to\ncreate a zle widget that will make some commands ignore imported\ncommands, and some include them.\n\nIf you find that you want more control over  when  commands  get\nimported,  you  may  wish  to  turn  SHAREHISTORY  off, INCAP-\nPENDHISTORY or INCAPPENDHISTORYTIME (see above) on, and then\nmanually import commands whenever you need them using `fc -RI'.\n\nInitialisation\nALLEXPORT (-a, ksh: -a)\nAll parameters subsequently defined are automatically exported.\n\nGLOBALEXPORT <Z>\nIf  this  option is set, passing the -x flag to the builtins de-\nclare, float, integer, readonly and typeset (but not local) will\nalso set the -g flag;  hence parameters exported to the environ-\nment will not be made local to the  enclosing  function,  unless\nthey  were  already  or the flag +g is given explicitly.  If the\noption is unset, exported parameters will be made local in  just\nthe same way as any other parameter.\n\nThis  option is set by default for backward compatibility; it is\nnot recommended that its behaviour be relied  upon.   Note  that\nthe  builtin  export  always  sets both the -x and -g flags, and\nhence its effect extends beyond the scope of the enclosing func-\ntion; this is the most portable way to achieve this behaviour.\n\nGLOBALRCS (-d) <D>\nIf  this  option  is unset, the startup files /etc/zsh/zprofile,\n/etc/zsh/zshrc, /etc/zsh/zlogin and /etc/zsh/zlogout will not be\nrun.   It  can be disabled and re-enabled at any time, including\ninside local startup files (.zshrc, etc.).\n\nRCS (+f) <D>\nAfter /etc/zsh/zshenv is sourced on startup, source the .zshenv,\n/etc/zsh/zprofile,     .zprofile,     /etc/zsh/zshrc,    .zshrc,\n/etc/zsh/zlogin, .zlogin, and .zlogout files,  as  described  in\nthe   section   `Files'.    If   this   option   is  unset,  the\n/etc/zsh/zshenv file is still sourced, but  any  of  the  others\nwill  not be; it can be set at any time to prevent the remaining\nstartup files after  the  currently  executing  one  from  being\nsourced.\n\nInput/Output\nALIASES <D>\nExpand aliases.\n\nCLOBBER (+C, ksh: +C) <D>\nAllows  `>'  redirection  to truncate existing files.  Otherwise\n`>!' or `>|' must be used to truncate a file.\n\nIf the option is not set, and the option APPENDCREATE  is  also\nnot  set,  `>>!' or `>>|' must be used to create a file.  If ei-\nther option is set, `>>' may be used.\n\nCORRECT (-0)\nTry to correct the spelling of commands.  Note  that,  when  the\nHASHLISTALL  option is not set or when some directories in the\npath are not readable, this may falsely report  spelling  errors\nthe first time some commands are used.\n\nThe  shell  variable  CORRECTIGNORE  may be set to a pattern to\nmatch words that will never be offered as corrections.\n\nCORRECTALL (-O)\nTry to correct the spelling of all arguments in a line.\n\nThe shell variable CORRECTIGNOREFILE may be set to  a  pattern\nto match file names that will never be offered as corrections.\n\nDVORAK Use  the Dvorak keyboard instead of the standard qwerty keyboard\nas a basis for examining spelling mistakes for the  CORRECT  and\nCORRECTALL options and the spell-word editor command.\n\nFLOWCONTROL <D>\nIf  this  option  is  unset,  output flow control via start/stop\ncharacters (usually  assigned  to  ^S/^Q)  is  disabled  in  the\nshell's editor.\n\nIGNOREEOF (-7)\nDo  not  exit on end-of-file.  Require the use of exit or logout\ninstead.  However, ten consecutive EOFs will cause the shell  to\nexit anyway, to avoid the shell hanging if its tty goes away.\n\nAlso,  if  this  option  is set and the Zsh Line Editor is used,\nwidgets implemented by shell functions can be bound to EOF (nor-\nmally  Control-D)  without  printing the normal warning message.\nThis works only for normal widgets, not for completion widgets.\n\nINTERACTIVECOMMENTS (-k) <K> <S>\nAllow comments even in interactive shells.\n\nHASHCMDS <D>\nNote the location of each command the first time it is executed.\nSubsequent  invocations  of  the same command will use the saved\nlocation, avoiding a path search.  If this option is  unset,  no\npath hashing is done at all.  However, when CORRECT is set, com-\nmands whose names do not appear in the functions or aliases hash\ntables  are  hashed in order to avoid reporting them as spelling\nerrors.\n\nHASHDIRS <D>\nWhenever a command name is hashed, hash the directory containing\nit,  as  well as all directories that occur earlier in the path.\nHas no effect if neither HASHCMDS nor CORRECT is set.\n\nHASHEXECUTABLESONLY\nWhen hashing commands because of HASHCMDS, check that the  file\nto be hashed is actually an executable.  This option is unset by\ndefault as if the path contains a large number of  commands,  or\nconsists  of  many remote files, the additional tests can take a\nlong time.  Trial and error is needed to show if this option  is\nbeneficial.\n\nMAILWARNING (-U)\nPrint  a  warning message if a mail file has been accessed since\nthe shell last checked.\n\nPATHDIRS (-Q)\nPerform a path search even on  command  names  with  slashes  in\nthem.  Thus if `/usr/local/bin' is in the user's path, and he or\nshe types `X11/xinit',  the  command  `/usr/local/bin/X11/xinit'\nwill  be executed (assuming it exists).  Commands explicitly be-\nginning with `/', `./' or `../' are  not  subject  to  the  path\nsearch.  This also applies to the `.' and source builtins.\n\nNote  that  subdirectories  of  the current directory are always\nsearched for executables specified in  this  form.   This  takes\nplace before any search indicated by this option, and regardless\nof whether `.' or the current directory appear  in  the  command\nsearch path.\n\nPATHSCRIPT <K> <S>\nIf  this option is not set, a script passed as the first non-op-\ntion argument to the shell must contain the name of the file  to\nopen.   If this option is set, and the script does not specify a\ndirectory path, the script is looked for first  in  the  current\ndirectory, then in the command path.  See the section INVOCATION\nin zsh(1).\n\nPRINTEIGHTBIT\nPrint eight bit characters literally in completion  lists,  etc.\nThis  option  is  not necessary if your system correctly returns\nthe printability of eight bit characters (see ctype(3)).\n\nPRINTEXITVALUE (-1)\nPrint the exit value of  programs  with  non-zero  exit  status.\nThis  is  only  available  at  the  command  line in interactive\nshells.\n\nRCQUOTES\nAllow the character sequence `'''  to  signify  a  single  quote\nwithin  singly  quoted  strings.   Note  this  does not apply in\nquoted strings using the format $'...', where a backslashed sin-\ngle quote can be used.\n\nRMSTARSILENT (-H) <K> <S>\nDo not query the user before executing `rm *' or `rm path/*'.\n\nRMSTARWAIT\nIf  querying  the  user  before executing `rm *' or `rm path/*',\nfirst wait ten seconds and ignore anything typed in  that  time.\nThis  avoids  the  problem of reflexively answering `yes' to the\nquery when one didn't really mean it.  The wait  and  query  can\nalways be avoided by expanding the `*' in ZLE (with tab).\n\nSHORTLOOPS <C> <Z>\nAllow  the  short forms of for, repeat, select, if, and function\nconstructs.\n\nSUNKEYBOARDHACK (-L)\nIf a line ends with a backquote, and there are an odd number  of\nbackquotes  on the line, ignore the trailing backquote.  This is\nuseful on some keyboards where the return key is too small,  and\nthe  backquote  key lies annoyingly close to it.  As an alterna-\ntive the variable KEYBOARDHACK lets you choose the character to\nbe removed.\n\nJob Control\nAUTOCONTINUE\nWith this option set, stopped jobs that are removed from the job\ntable with the disown builtin command are automatically  sent  a\nCONT signal to make them running.\n\nAUTORESUME (-W)\nTreat  single word simple commands without redirection as candi-\ndates for resumption of an existing job.\n\nBGNICE (-6) <C> <Z>\nRun all background jobs at a lower priority.  This option is set\nby default.\n\nCHECKJOBS <Z>\nReport  the status of background and suspended jobs before exit-\ning a shell with job control; a second attempt to exit the shell\nwill  succeed.   NOCHECKJOBS  is best used only in combination\nwith NOHUP, else such jobs will be killed automatically.\n\nThe check is omitted if the commands run from the previous  com-\nmand  line  included  a  `jobs' command, since it is assumed the\nuser is aware that there are background or  suspended  jobs.   A\n`jobs' command run from one of the hook functions defined in the\nsection SPECIAL FUNCTIONS in zshmisc(1) is not counted for  this\npurpose.\n\nCHECKRUNNINGJOBS <Z>\nCheck for both running and suspended jobs when CHECKJOBS is en-\nabled.  When this option is disabled, zsh checks only  for  sus-\npended jobs, which matches the default behavior of bash.\n\nThis option has no effect unless CHECKJOBS is set.\n\nHUP <Z>\nSend the HUP signal to running jobs when the shell exits.\n\nLONGLISTJOBS (-R)\nPrint job notifications in the long format by default.\n\nMONITOR (-m, ksh: -m)\nAllow job control.  Set by default in interactive shells.\n\nNOTIFY (-5, ksh: -b) <Z>\nReport  the  status  of background jobs immediately, rather than\nwaiting until just before printing a prompt.\n\nPOSIXJOBS <K> <S>\nThis option makes job control  more  compliant  with  the  POSIX\nstandard.\n\nWhen the option is not set, the MONITOR option is unset on entry\nto subshells, so that job control is no longer active.  When the\noption  is set, the MONITOR option and job control remain active\nin the subshell, but note that the subshell  has  no  access  to\njobs in the parent shell.\n\nWhen  the option is not set, jobs put in the background or fore-\nground with bg or fg are displayed  with  the  same  information\nthat  would  be  reported by jobs.  When the option is set, only\nthe text is printed.  The output from jobs  itself  is  not  af-\nfected by the option.\n\nWhen  the  option  is  not  set, job information from the parent\nshell is saved for output within a subshell (for example, within\na  pipeline).   When  the  option  is set, the output of jobs is\nempty until a job is started within the subshell.\n\nIn previous versions of the shell, it was  necessary  to  enable\nPOSIXJOBS  in  order for the builtin command wait to return the\nstatus of background jobs that had already exited.  This  is  no\nlonger the case.\n\nPrompting\nPROMPTBANG <K>\nIf  set,  `!' is treated specially in prompt expansion.  See EX-\nPANSION OF PROMPT SEQUENCES in zshmisc(1).\n\nPROMPTCR (+V) <D>\nPrint a carriage return just before printing  a  prompt  in  the\nline  editor.   This  is  on by default as multi-line editing is\nonly possible if the editor knows where the start  of  the  line\nappears.\n\nPROMPTSP <D>\nAttempt to preserve a partial line (i.e. a line that did not end\nwith a newline) that would otherwise be covered up by  the  com-\nmand  prompt  due  to  the PROMPTCR option.  This works by out-\nputting some cursor-control characters, including  a  series  of\nspaces, that should make the terminal wrap to the next line when\na partial line is present (note that this is only successful  if\nyour terminal has automatic margins, which is typical).\n\nWhen a partial line is preserved, by default you will see an in-\nverse+bold character at the end of the partial line:  a `%'  for\na  normal  user  or a `#' for root.  If set, the shell parameter\nPROMPTEOLMARK can be used to customize how the end of  partial\nlines are shown.\n\nNOTE:  if  the PROMPTCR option is not set, enabling this option\nwill have no effect.  This option is on by default.\n\nPROMPTPERCENT <C> <Z>\nIf set, `%' is treated specially in prompt expansion.   See  EX-\nPANSION OF PROMPT SEQUENCES in zshmisc(1).\n\nPROMPTSUBST <K> <S>\nIf set, parameter expansion, command substitution and arithmetic\nexpansion  are  performed  in  prompts.   Substitutions   within\nprompts do not affect the command status.\n\nTRANSIENTRPROMPT\nRemove  any  right  prompt from display when accepting a command\nline.  This may be useful with terminals  with  other  cut/paste\nmethods.\n\nScripts and Functions\nALIASFUNCDEF <S>\nBy default, zsh does not allow the definition of functions using\nthe `name ()' syntax if name was  expanded  as  an  alias:  this\ncauses an error.  This is usually the desired behaviour, as oth-\nerwise the combination of an alias and a function based  on  the\nsame definition can easily cause problems.\n\nWhen  this option is set, aliases can be used for defining func-\ntions.\n\nFor example, consider the following definitions  as  they  might\noccur in a startup file.\n\nalias foo=bar\nfoo() {\nprint This probably does not do what you expect.\n}\n\nHere,  foo  is  expanded as an alias to bar before the () is en-\ncountered, so the function defined would be named bar.   By  de-\nfault  this is instead an error in native mode.  Note that quot-\ning any part of the function name, or using  the  keyword  func-\ntion,  avoids  the  problem, so is recommended when the function\nname can also be an alias.\n\nCBASES\nOutput hexadecimal numbers in the standard C format, for example\n`0xFF' instead of the usual `16#FF'.  If the option OCTALZEROES\nis also set (it is  not  by  default),  octal  numbers  will  be\ntreated  similarly  and hence appear as `077' instead of `8#77'.\nThis option has no effect on the choice of the output base,  nor\non  the  output of bases other than hexadecimal and octal.  Note\nthat these formats will be understood on input  irrespective  of\nthe setting of CBASES.\n\nCPRECEDENCES\nThis  alters  the  precedence of arithmetic operators to be more\nlike C and other programming languages; the  section  ARITHMETIC\nEVALUATION in zshmisc(1) has an explicit list.\n\nDEBUGBEFORECMD <D>\nRun  the DEBUG trap before each command; otherwise it is run af-\nter each command.  Setting this option mimics the  behaviour  of\nksh 93; with the option unset the behaviour is that of ksh 88.\n\nERREXIT (-e, ksh: -e)\nIf  a command has a non-zero exit status, execute the ZERR trap,\nif set, and exit.  This is disabled while running initialization\nscripts.\n\nThe behaviour is also disabled inside DEBUG traps.  In this case\nthe option is handled specially: it is unset  on  entry  to  the\ntrap.   If  the  option DEBUGBEFORECMD is set, as it is by de-\nfault, and the option ERREXIT is found  to  have  been  set  on\nexit,  then  the  command for which the DEBUG trap is being exe-\ncuted is skipped.  The option is restored after the trap exits.\n\nNon-zero status in a command list containing && or || is ignored\nfor commands not at the end of the list.  Hence\n\nfalse && true\n\ndoes not trigger exit.\n\nExiting  due to ERREXIT has certain interactions with asynchro-\nnous jobs noted in the section JOBS in zshmisc(1).\n\nERRRETURN\nIf a command has a non-zero exit status, return immediately from\nthe  enclosing  function.   The  logic  is  similar  to that for\nERREXIT, except that an implicit return statement  is  executed\ninstead  of an exit.  This will trigger an exit at the outermost\nlevel of a non-interactive script.\n\nNormally this option inherits the  behaviour  of  ERREXIT  that\ncode  followed by `&&' `||' does not trigger a return.  Hence in\nthe following:\n\nsummit || true\n\nno return is forced as the combined effect always has a zero re-\nturn status.\n\nNote.  however,  that if summit in the above example is itself a\nfunction, code inside it is considered separately: it may  force\na  return  from  summit  (assuming the option remains set within\nsummit), but not from the enclosing context.  This behaviour  is\ndifferent from ERREXIT which is unaffected by function scope.\n\nEVALLINENO <Z>\nIf  set, line numbers of expressions evaluated using the builtin\neval are tracked separately of the enclosing environment.   This\napplies  both to the parameter LINENO and the line number output\nby the prompt escape %i.  If the option is set, the  prompt  es-\ncape %N will output the string `(eval)' instead of the script or\nfunction name as an indication.   (The two  prompt  escapes  are\ntypically used in the parameter PS4 to be output when the option\nXTRACE is set.)  If EVALLINENO is unset, the line number of the\nsurrounding  script  or  function is retained during the evalua-\ntion.\n\nEXEC (+n, ksh: +n) <D>\nDo execute commands.  Without this option, commands are read and\nchecked for syntax errors, but not executed.  This option cannot\nbe turned off in an interactive shell, except when `-n' is  sup-\nplied to the shell at startup.\n\nFUNCTIONARGZERO <C> <Z>\nWhen  executing  a  shell  function or sourcing a script, set $0\ntemporarily to the name of the function/script.  Note that  tog-\ngling  FUNCTIONARGZERO  from  on to off (or off to on) does not\nchange the current value of $0.  Only the state  upon  entry  to\nthe function or script has an effect.  Compare POSIXARGZERO.\n\nLOCALLOOPS\nWhen  this  option  is not set, the effect of break and continue\ncommands may propagate outside function scope,  affecting  loops\nin calling functions.  When the option is set in a calling func-\ntion, a break or a continue that is not caught within  a  called\nfunction  (regardless  of  the setting of the option within that\nfunction) produces a warning and the effect is cancelled.\n\nLOCALOPTIONS <K>\nIf this option is set at the point of return from a shell  func-\ntion, most options (including this one) which were in force upon\nentry to the function are restored; options  that  are  not  re-\nstored  are PRIVILEGED and RESTRICTED.  Otherwise, only this op-\ntion, and the LOCALLOOPS, XTRACE and  PRINTEXITVALUE  options\nare  restored.   Hence  if  this  is explicitly unset by a shell\nfunction the other options in force at the point of return  will\nremain  so.   A shell function can also guarantee itself a known\nshell configuration with a formulation like  `emulate  -L  zsh';\nthe -L activates LOCALOPTIONS.\n\nLOCALPATTERNS\nIf  this option is set at the point of return from a shell func-\ntion, the state of pattern disables, as  set  with  the  builtin\ncommand  `disable -p', is restored to what it was when the func-\ntion was entered.  The behaviour of this option  is  similar  to\nthe  effect  of  LOCALOPTIONS on options; hence `emulate -L sh'\n(or indeed any other emulation with the -L option) activates LO-\nCALPATTERNS.\n\nLOCALTRAPS <K>\nIf  this  option is set when a signal trap is set inside a func-\ntion, then the previous status of the trap for that signal  will\nbe restored when the function exits.  Note that this option must\nbe set prior to altering the trap behaviour in a  function;  un-\nlike  LOCALOPTIONS,  the value on exit from the function is ir-\nrelevant.  However, it does not need to be set before any global\ntrap for that to be correctly restored by a function.  For exam-\nple,\n\nunsetopt localtraps\ntrap - INT\nfn() { setopt localtraps; trap '' INT; sleep 3; }\n\nwill restore normal handling of SIGINT after the function exits.\n\nMULTIFUNCDEF <Z>\nAllow definitions of multiple functions at once in the form `fn1\nfn2...()';  if the option is not set, this causes a parse error.\nDefinition of multiple functions with the  function  keyword  is\nalways  allowed.   Multiple  function  definitions are not often\nused and can cause obscure errors.\n\nMULTIOS <Z>\nPerform implicit tees or cats when multiple redirections are at-\ntempted (see the section `Redirection').\n\nOCTALZEROES <S>\nInterpret  any integer constant beginning with a 0 as octal, per\nIEEE Std 1003.2-1992 (ISO 9945-2:1993).  This is not enabled  by\ndefault as it causes problems with parsing of, for example, date\nand time strings with leading zeroes.\n\nSequences of digits indicating a numeric base such as  the  `08'\ncomponent  in `08#77' are always interpreted as decimal, regard-\nless of leading zeroes.\n\nPIPEFAIL\nBy default, when a pipeline exits the exit  status  recorded  by\nthe shell and returned by the shell variable $? reflects that of\nthe rightmost element of a pipeline.  If this option is set, the\nexit status instead reflects the status of the rightmost element\nof the pipeline that was non-zero, or zero if all  elements  ex-\nited with zero status.\n\nSOURCETRACE\nIf  set,  zsh will print an informational message announcing the\nname of each file it loads.  The format of the output is similar\nto  that  for the XTRACE option, with the message <sourcetrace>.\nA file may be loaded by the shell itself when it starts  up  and\nshuts  down  (Startup/Shutdown  Files)  or  by  the  use  of the\n`source' and `dot' builtin commands.\n\nTYPESETSILENT\nIf this is unset, executing any of the `typeset' family of  com-\nmands with no options and a list of parameters that have no val-\nues to be assigned but already exist will display the  value  of\nthe  parameter.   If  the option is set, they will only be shown\nwhen parameters are selected with the `-m' option.   The  option\n`-p' is available whether or not the option is set.\n\nVERBOSE (-v, ksh: -v)\nPrint shell input lines as they are read.\n\nXTRACE (-x, ksh: -x)\nPrint  commands  and  their arguments as they are executed.  The\noutput is preceded by the value of $PS4, formatted as  described\nin the section EXPANSION OF PROMPT SEQUENCES in zshmisc(1).\n\nShell Emulation\nAPPENDCREATE <K> <S>\nThis option only applies when NOCLOBBER (-C) is in effect.\n\nIf this option is not set, the shell will report an error when a\nappend redirection (>>) is used on a file that does not  already\nexists  (the  traditional  zsh behaviour of NOCLOBBER).  If the\noption is set, no error is reported (POSIX behaviour).\n\nBASHREMATCH\nWhen set, matches performed with the =~ operator  will  set  the\nBASHREMATCH  array  variable,  instead of the default MATCH and\nmatch variables.  The first element of  the  BASHREMATCH  array\nwill  contain  the  entire  matched text and subsequent elements\nwill contain extracted substrings.  This option makes more sense\nwhen  KSHARRAYS is also set, so that the entire matched portion\nis stored at index 0 and the first  substring  is  at  index  1.\nWithout  this  option,  the  MATCH  variable contains the entire\nmatched text and the match array variable contains substrings.\n\nBSDECHO <S>\nMake the echo builtin compatible with the BSD  echo(1)  command.\nThis  disables  backslashed escape sequences in echo strings un-\nless the -e option is specified.\n\nCONTINUEONERROR\nIf a fatal error is encountered (see the section ERRORS in  zsh-\nmisc(1)),  and  the  code is running in a script, the shell will\nresume execution at the next statement in the script at the  top\nlevel,  in other words outside all functions or shell constructs\nsuch as loops and conditions.  This mimics the behaviour of  in-\nteractive  shells, where the shell returns to the line editor to\nread a new command; it was the normal behaviour in  versions  of\nzsh before 5.0.1.\n\nCSHJUNKIEHISTORY <C>\nA history reference without an event specifier will always refer\nto the previous command.  Without this option,  such  a  history\nreference  refers to the same event as the previous history ref-\nerence on the current command line, defaulting to  the  previous\ncommand.\n\nCSHJUNKIELOOPS <C>\nAllow  loop  bodies  to take the form `list; end' instead of `do\nlist; done'.\n\nCSHJUNKIEQUOTES <C>\nChanges the rules for single- and double-quoted  text  to  match\nthat  of  csh.  These require that embedded newlines be preceded\nby a backslash; unescaped newlines will cause an error  message.\nIn  double-quoted  strings, it is made impossible to escape `$',\n``' or `\"' (and `\\' itself no longer needs  escaping).   Command\nsubstitutions are only expanded once, and cannot be nested.\n\nCSHNULLCMD <C>\nDo  not  use  the values of NULLCMD and READNULLCMD when running\nredirections with no command.  This make such redirections  fail\n(see the section `Redirection').\n\nKSHARRAYS <K> <S>\nEmulate  ksh array handling as closely as possible.  If this op-\ntion is set, array elements are numbered from zero, an array pa-\nrameter without subscript refers to the first element instead of\nthe whole array, and braces are required to delimit a  subscript\n(`${path[2]}' rather than just `$path[2]') or to apply modifiers\nto any parameter (`${PWD:h}' rather than `$PWD:h').\n\nKSHAUTOLOAD <K> <S>\nEmulate ksh function autoloading.  This means that when a  func-\ntion  is  autoloaded, the corresponding file is merely executed,\nand must define the function itself.  (By default, the  function\nis  defined to the contents of the file.  However, the most com-\nmon ksh-style case - of the file containing only a simple  defi-\nnition of the function - is always handled in the ksh-compatible\nmanner.)\n\nKSHOPTIONPRINT <K>\nAlters the way options settings are printed: instead of separate\nlists  of  set  and unset options, all options are shown, marked\n`on' if they are in the non-default state, `off' otherwise.\n\nKSHTYPESET\nThis option is now obsolete: a better appropximation to the  be-\nhaviour  of  other shells is obtained with the reserved word in-\nterface to declare, export, float, integer, local, readonly  and\ntypeset.  Note that the option is only applied when the reserved\nword interface is not in use.\n\nAlters the way arguments to the typeset family of commands,  in-\ncluding declare, export, float, integer, local and readonly, are\nprocessed.  Without this option, zsh will  perform  normal  word\nsplitting  after command and parameter expansion in arguments of\nan assignment; with it, word splitting does not  take  place  in\nthose cases.\n\nKSHZEROSUBSCRIPT\nTreat  use  of  a subscript of value zero in array or string ex-\npressions as a reference to the first element, i.e. the  element\nthat usually has the subscript 1.  Ignored if KSHARRAYS is also\nset.\n\nIf neither this option nor KSHARRAYS is set, accesses to an el-\nement  of an array or string with subscript zero return an empty\nelement or string, while attempts to set element zero of an  ar-\nray or string are treated as an error.  However, attempts to set\nan otherwise valid subscript range that includes zero will  suc-\nceed.  For example, if KSHZEROSUBSCRIPT is not set,\n\narray[0]=(element)\n\nis an error, while\n\narray[0,1]=(element)\n\nis not and will replace the first element of the array.\n\nThis  option  is  for  compatibility  with older versions of the\nshell and is not recommended in new code.\n\nPOSIXALIASES <K> <S>\nWhen this option is set, reserved words are not  candidates  for\nalias expansion:  it is still possible to declare any of them as\nan alias, but the alias will never be expanded.  Reserved  words\nare described in the section RESERVED WORDS in zshmisc(1).\n\nAlias expansion takes place while text is being read; hence when\nthis option is set it does not take effect until the end of  any\nfunction  or other piece of shell code parsed as one unit.  Note\nthis may cause differences from other shells even when  the  op-\ntion  is  in  effect.   For example, when running a command with\n`zsh -c', or even `zsh -o posixaliases -c', the  entire  command\nargument  is  parsed  as one unit, so aliases defined within the\nargument are not available even in later lines.   If  in  doubt,\navoid use of aliases in non-interactive code.\n\nPOSIXARGZERO\nThis  option may be used to temporarily disable FUNCTIONARGZERO\nand thereby restore the value of $0 to the name used  to  invoke\nthe  shell  (or as set by the -c command line option).  For com-\npatibility with previous versions of the shell,  emulations  use\nNOFUNCTIONARGZERO  instead  of POSIXARGZERO, which may result\nin unexpected scoping of $0 if the emulation mode is changed in-\nside  a  function  or  script.  To avoid this, explicitly enable\nPOSIXARGZERO in the emulate command:\n\nemulate sh -o POSIXARGZERO\n\nNote that NOPOSIXARGZERO has no effect unless FUNCTIONARGZERO\nwas already enabled upon entry to the function or script.\n\nPOSIXBUILTINS <K> <S>\nWhen  this option is set the command builtin can be used to exe-\ncute shell builtin commands.   Parameter  assignments  specified\nbefore  shell  functions and special builtins are kept after the\ncommand completes unless the special builtin  is  prefixed  with\nthe  command  builtin.   Special  builtins are ., :, break, con-\ntinue, declare, eval, exit, export,  integer,  local,  readonly,\nreturn, set, shift, source, times, trap and unset.\n\nIn  addition, various error conditions associated with the above\nbuiltins or exec cause a non-interactive shell to  exit  and  an\ninteractive shell to return to its top-level processing.\n\nFurthermore, functions and shell builtins are not executed after\nan exec prefix; the command to be executed must be  an  external\ncommand found in the path.\n\nFurthermore,  the  getopts builtin behaves in a POSIX-compatible\nfashion in that the associated variable OPTIND is not made local\nto functions.\n\nMoreover, the warning and special exit code from [[ -o nonexis-\ntentoption ]] are suppressed.\n\nPOSIXIDENTIFIERS <K> <S>\nWhen this option is set, only the ASCII characters a to z, A  to\nZ,  0  to 9 and  may be used in identifiers (names of shell pa-\nrameters and modules).\n\nIn addition, setting this option limits the effect of  parameter\nsubstitution  with  no  braces,  so  that  the  expression $# is\ntreated as the parameter $# even if followed by a valid  parame-\nter  name.  When it is unset, zsh allows expressions of the form\n$#name to refer to the length of $name, even for  special  vari-\nables, for example in expressions such as $#- and $#*.\n\nAnother  difference is that with the option set assignment to an\nunset variable in arithmetic context causes the variable  to  be\ncreated as a scalar rather than a numeric type.  So after `unset\nt; (( t = 3 ))'. without POSIXIDENTIFIERS  set  t  has  integer\ntype, while with it set it has scalar type.\n\nWhen  the option is unset and multibyte character support is en-\nabled (i.e. it is compiled in and the option MULTIBYTE is  set),\nthen additionally any alphanumeric characters in the local char-\nacter set may be used in identifiers.   Note  that  scripts  and\nfunctions  written  with this feature are not portable, and also\nthat both options must be set before the script or  function  is\nparsed;  setting  them during execution is not sufficient as the\nsyntax variable=value has  already  been  parsed  as  a  command\nrather than an assignment.\n\nIf  multibyte  character  support is not compiled into the shell\nthis option is ignored; all octets with the top bit set  may  be\nused  in  identifiers.   This  is non-standard but is the tradi-\ntional zsh behaviour.\n\nPOSIXSTRINGS <K> <S>\nThis option affects processing of quoted strings.  Currently  it\nonly  affects the behaviour of null characters, i.e. character 0\nin the portable character set corresponding to US ASCII.\n\nWhen this option is not set,  null  characters  embedded  within\nstrings  of  the form $'...' are treated as ordinary characters.\nThe entire string is maintained within the shell and  output  to\nfiles where necessary, although owing to restrictions of the li-\nbrary interface the string is truncated at the null character in\nfile  names,  environment variables, or in arguments to external\nprograms.\n\nWhen this option is set, the $'...' expression is  truncated  at\nthe  null  character.   Note  that  remaining  parts of the same\nstring beyond the termination of the quotes are not truncated.\n\nFor example, the command line argument a$'b\\0c'd is treated with\nthe  option off as the characters a, b, null, c, d, and with the\noption on as the characters a, b, d.\n\nPOSIXTRAPS <K> <S>\nWhen this option is set, the usual zsh  behaviour  of  executing\ntraps  for  EXIT on exit from shell functions is suppressed.  In\nthat case, manipulating EXIT traps always alters the global trap\nfor exiting the shell; the LOCALTRAPS option is ignored for the\nEXIT trap.  Furthermore, a return statement executed in  a  trap\nwith  no  argument  passes back from the function the value from\nthe surrounding context, not from code executed within the trap.\n\nSHFILEEXPANSION <K> <S>\nPerform filename expansion (e.g., ~ expansion) before  parameter\nexpansion,  command substitution, arithmetic expansion and brace\nexpansion.  If this option is unset, it is performed after brace\nexpansion, so things like `~$USERNAME' and `~{pfalstad,rc}' will\nwork.\n\nSHNULLCMD <K> <S>\nDo not use the values of  NULLCMD  and  READNULLCMD  when  doing\nredirections, use `:' instead (see the section `Redirection').\n\nSHOPTIONLETTERS <K> <S>\nIf this option is set the shell tries to interpret single letter\noptions (which are used with set  and  setopt)  like  ksh  does.\nThis also affects the value of the - special parameter.\n\nSHWORDSPLIT (-y) <K> <S>\nCauses field splitting to be performed on unquoted parameter ex-\npansions.  Note that this option has nothing  to  do  with  word\nsplitting.  (See zshexpn(1).)\n\nTRAPSASYNC\nWhile  waiting  for  a  program  to exit, handle signals and run\ntraps immediately.  Otherwise the trap  is  run  after  a  child\nprocess  has  exited.   Note  this  does not affect the point at\nwhich traps are run for any case other than when  the  shell  is\nwaiting for a child process.\n\nShell State\nINTERACTIVE (-i, ksh: -i)\nThis is an interactive shell.  This option is set upon initiali-\nsation if the standard input is a tty  and  commands  are  being\nread  from  standard input.  (See the discussion of SHINSTDIN.)\nThis heuristic may be overridden by specifying a state for  this\noption  on  the command line.  The value of this option can only\nbe changed via flags supplied at invocation of  the  shell.   It\ncannot be changed once zsh is running.\n\nLOGIN (-l, ksh: -l)\nThis  is  a  login shell.  If this option is not explicitly set,\nthe shell becomes a login shell if the first  character  of  the\nargv[0] passed to the shell is a `-'.\n\nPRIVILEGED (-p, ksh: -p)\nTurn  on  privileged mode. Typically this is used when script is\nto be run with elevated privileges. This should be done as  fol-\nlows  directly with the -p option to zsh so that it takes effect\nduring startup.\n\n#!/bin/zsh -p\n\nThe option is enabled automatically on startup if the  effective\nuser  (group)  ID  is  not equal to the real user (group) ID. In\nthis case, turning the option off causes the effective user  and\ngroup  IDs  to  be  set to the real user and group IDs. Be aware\nthat if that fails the shell may be running with  different  IDs\nthan  was  intended so a script should check for failure and act\naccordingly, for example:\n\nunsetopt privileged || exit\n\nThe PRIVILEGED option disables sourcing user startup files.   If\nzsh   is  invoked  as  `sh'  or  `ksh'  with  this  option  set,\n/etc/suidprofile is sourced (after /etc/profile on  interactive\nshells). Sourcing ~/.profile is disabled and the contents of the\nENV variable is ignored. This option cannot be changed using the\n-m option of setopt and unsetopt, and changing it inside a func-\ntion always changes it globally regardless of the  LOCALOPTIONS\noption.\n\nRESTRICTED (-r)\nEnables  restricted  mode.   This option cannot be changed using\nunsetopt, and setting it inside a  function  always  changes  it\nglobally  regardless  of the LOCALOPTIONS option.  See the sec-\ntion `Restricted Shell'.\n\nSHINSTDIN (-s, ksh: -s)\nCommands are being read from the standard input.   Commands  are\nread  from standard input if no command is specified with -c and\nno file of commands is specified.  If SHINSTDIN is set  explic-\nitly on the command line, any argument that would otherwise have\nbeen taken as a file to run will instead be treated as a  normal\npositional  parameter.   Note that setting or unsetting this op-\ntion on the command line does not necessarily affect  the  state\nthe option will have while the shell is running - that is purely\nan indicator of whether or not commands are actually being  read\nfrom  standard  input.   The  value  of  this option can only be\nchanged via flags supplied at invocation of the shell.  It  can-\nnot be changed once zsh is running.\n\nSINGLECOMMAND (-t, ksh: -t)\nIf  the  shell  is reading from standard input, it exits after a\nsingle command has been executed.  This  also  makes  the  shell\nnon-interactive, unless the INTERACTIVE option is explicitly set\non the command line.  The value  of  this  option  can  only  be\nchanged  via flags supplied at invocation of the shell.  It can-\nnot be changed once zsh is running.\n\nZle\nBEEP (+B) <D>\nBeep on error in ZLE.\n\nCOMBININGCHARS\nAssume that the  terminal  displays  combining  characters  cor-\nrectly.   Specifically, if a base alphanumeric character is fol-\nlowed by one or more zero-width punctuation  characters,  assume\nthat  the  zero-width  characters will be displayed as modifica-\ntions to the base character within the same width.  Not all ter-\nminals handle this.  If this option is not set, zero-width char-\nacters are displayed separately with special mark-up.\n\nIf this option is set, the pattern  test  [[:WORD:]]  matches  a\nzero-width  punctuation character on the assumption that it will\nbe used as part of a word in combination with a word  character.\nOtherwise  the  base  shell does not handle combining characters\nspecially.\n\nEMACS  If ZLE is loaded, turning on this option has the equivalent  ef-\nfect  of  `bindkey  -e'.   In  addition, the VI option is unset.\nTurning it off has no effect.  The option setting is not guaran-\nteed to reflect the current keymap.  This option is provided for\ncompatibility; bindkey is the recommended interface.\n\nOVERSTRIKE\nStart up the line editor in overstrike mode.\n\nSINGLELINEZLE (-M) <K>\nUse single-line command line editing instead of multi-line.\n\nNote that although this is on by default  in  ksh  emulation  it\nonly provides superficial compatibility with the ksh line editor\nand reduces the effectiveness of the zsh line editor.  As it has\nno  effect  on shell syntax, many users may wish to disable this\noption when using ksh emulation interactively.\n\nVI     If ZLE is loaded, turning on this option has the equivalent  ef-\nfect  of  `bindkey -v'.  In addition, the EMACS option is unset.\nTurning it off has no effect.  The option setting is not guaran-\nteed to reflect the current keymap.  This option is provided for\ncompatibility; bindkey is the recommended interface.\n\nZLE (-Z)\nUse the zsh line editor.  Set by default in  interactive  shells\nconnected to a terminal.\n",
                "subsections": []
            },
            "OPTION ALIASES": {
                "content": "Some  options have alternative names.  These aliases are never used for\noutput, but can be used just like normal option names  when  specifying\noptions to the shell.\n\nBRACEEXPAND\nNOIGNOREBRACES (ksh and bash compatibility)\n\nDOTGLOB\nGLOBDOTS (bash compatibility)\n\nHASHALL\nHASHCMDS (bash compatibility)\n\nHISTAPPEND\nAPPENDHISTORY (bash compatibility)\n\nHISTEXPAND\nBANGHIST (bash compatibility)\n\nLOG    NOHISTNOFUNCTIONS (ksh compatibility)\n\nMAILWARN\nMAILWARNING (bash compatibility)\n\nONECMD\nSINGLECOMMAND (bash compatibility)\n\nPHYSICAL\nCHASELINKS (ksh and bash compatibility)\n\nPROMPTVARS\nPROMPTSUBST (bash compatibility)\n\nSTDIN  SHINSTDIN (ksh compatibility)\n\nTRACKALL\nHASHCMDS (ksh compatibility)\n",
                "subsections": []
            },
            "SINGLE LETTER OPTIONS": {
                "content": "Default set\n-0     CORRECT\n-1     PRINTEXITVALUE\n-2     NOBADPATTERN\n-3     NONOMATCH\n-4     GLOBDOTS\n-5     NOTIFY\n-6     BGNICE\n-7     IGNOREEOF\n-8     MARKDIRS\n-9     AUTOLIST\n-B     NOBEEP\n-C     NOCLOBBER\n-D     PUSHDTOHOME\n-E     PUSHDSILENT\n-F     NOGLOB\n-G     NULLGLOB\n-H     RMSTARSILENT\n-I     IGNOREBRACES\n-J     AUTOCD\n-K     NOBANGHIST\n-L     SUNKEYBOARDHACK\n-M     SINGLELINEZLE\n-N     AUTOPUSHD\n-O     CORRECTALL\n-P     RCEXPANDPARAM\n-Q     PATHDIRS\n-R     LONGLISTJOBS\n-S     RECEXACT\n-T     CDABLEVARS\n-U     MAILWARNING\n-V     NOPROMPTCR\n-W     AUTORESUME\n-X     LISTTYPES\n-Y     MENUCOMPLETE\n-Z     ZLE\n-a     ALLEXPORT\n-e     ERREXIT\n-f     NORCS\n-g     HISTIGNORESPACE\n-h     HISTIGNOREDUPS\n-i     INTERACTIVE\n-k     INTERACTIVECOMMENTS\n-l     LOGIN\n-m     MONITOR\n-n     NOEXEC\n-p     PRIVILEGED\n-r     RESTRICTED\n-s     SHINSTDIN\n-t     SINGLECOMMAND\n-u     NOUNSET\n-v     VERBOSE\n-w     CHASELINKS\n-x     XTRACE\n-y     SHWORDSPLIT\n\nsh/ksh emulation set\n-C     NOCLOBBER\n-T     TRAPSASYNC\n-X     MARKDIRS\n-a     ALLEXPORT\n-b     NOTIFY\n-e     ERREXIT\n-f     NOGLOB\n-i     INTERACTIVE\n-l     LOGIN\n-m     MONITOR\n-n     NOEXEC\n-p     PRIVILEGED\n-r     RESTRICTED\n-s     SHINSTDIN\n-t     SINGLECOMMAND\n-u     NOUNSET\n-v     VERBOSE\n-x     XTRACE\n\nAlso note\n-A     Used by set for setting arrays\n-b     Used on the command line to specify end of option processing\n-c     Used on the command line to specify a single command\n-m     Used by setopt for pattern-matching option setting\n-o     Used in all places to allow use of long option names\n-s     Used by set to sort positional parameters\n\nzsh 5.8.1                      February 12, 2022                 ZSHOPTIONS(1)",
                "subsections": []
            }
        }
    }
}