diff options
author | Axel Beckert <abe@deuxchevaux.org> | 2020-02-16 03:29:05 +0100 |
---|---|---|
committer | Axel Beckert <abe@deuxchevaux.org> | 2020-02-16 03:29:05 +0100 |
commit | 94c033d2e281eb1f49e8366d21fc259ce8c0c4f5 (patch) | |
tree | 701ad2fd3a7867e97689d1349d46ca25a92297b4 /Doc/zshbuiltins.1 | |
parent | 643de931640e01aa246723d2038328ef33737965 (diff) | |
parent | 77d203f3fbbd76386bf197f9776269a1de580bb5 (diff) | |
download | zsh-94c033d2e281eb1f49e8366d21fc259ce8c0c4f5.tar.gz zsh-94c033d2e281eb1f49e8366d21fc259ce8c0c4f5.zip |
New upstream version 5.8
Diffstat (limited to 'Doc/zshbuiltins.1')
-rw-r--r-- | Doc/zshbuiltins.1 | 3194 |
1 files changed, 3194 insertions, 0 deletions
diff --git a/Doc/zshbuiltins.1 b/Doc/zshbuiltins.1 new file mode 100644 index 000000000..4ec477bd0 --- /dev/null +++ b/Doc/zshbuiltins.1 @@ -0,0 +1,3194 @@ +.TH "ZSHBUILTINS" "1" "February 14, 2020" "zsh 5\&.8" +.SH "NAME" +zshbuiltins \- zsh built\-in commands +.\" Yodl file: Zsh/builtins.yo +.SH "SHELL BUILTIN COMMANDS" + +Some shell builtin commands take options as described in individual +entries; these are often referred to in the list below as `\fBflags\fP\&' to +avoid confusion with shell options, which may also have an effect on the +behaviour of builtin commands\&. In this introductory section, +`\fBoption\fP\&' always has the meaning of an option to a command that should +be familiar to most command line users\&. +.PP +Typically, options are single letters preceded by a hyphen (\fB\-\fP)\&. +Options that take an argument accept it either immediately following the +option letter or after white space, for example `\fBprint \-C3 {1\&.\&.9}\fP\&' or +`\fBprint \-C 3 {1\&.\&.9}\fP\&' are equivalent\&. Arguments to options are not the +same as arguments to the command; the documentation indicates which is +which\&. Options that do not take an argument may be combined in a single +word, for example `\fBprint \-rca \-\- *\fP\&' and `\fBprint \-r \-c \-a \-\- *\fP' are +equivalent\&. +.PP +Some shell builtin commands also take options that begin with `\fB+\fP\&' +instead of `\fB\-\fP\&'\&. The list below makes clear which commands these +are\&. +.PP +Options (together with their individual arguments, if any) must appear +in a group before any non\-option arguments; once the first non\-option +argument has been found, option processing is terminated\&. +.PP +All builtin commands other than `\fBecho\fP\&' and precommand modifiers, +even those that have no options, can be given the argument `\fB\-\fP\fB\-\fP\&' +to terminate option processing\&. This indicates that the following words +are non\-option arguments, but is otherwise ignored\&. This is useful in +cases where arguments to the command may begin with `\fB\-\fP\&'\&. For +historical reasons, most builtin commands (including `\fBecho\fP\&') also +recognize a single `\fB\-\fP\&' in a separate word for this purpose; note +that this is less standard and use of `\fB\-\fP\fB\-\fP\&' is recommended\&. +.PP +.PD 0 +.TP +.PD +\fB\-\fP \fIsimple command\fP +See the section `Precommand Modifiers\&' in \fIzshmisc\fP(1)\&. +.TP +\fB\&.\fP \fIfile\fP [ \fIarg\fP \&.\&.\&. ] +Read commands from \fIfile\fP and execute them in the current shell +environment\&. +.RS +.PP +If \fIfile\fP does not contain a slash, or if \fBPATH_DIRS\fP is set, +the shell looks in the components of \fB$path\fP to find the directory +containing \fIfile\fP\&. Files in the current directory are not read +unless `\fB\&.\fP\&' appears somewhere in \fB$path\fP\&. If a file named +`\fIfile\fP\fB\&.zwc\fP\&' is found, is newer than \fIfile\fP, and is the +compiled form (created with the \fBzcompile\fP builtin) of \fIfile\fP, +then commands are read from that file instead of \fIfile\fP\&. +.PP +If any arguments \fIarg\fP are given, +they become the positional parameters; the old positional +parameters are restored when the \fIfile\fP is done executing\&. +However, if no arguments are given, +the positional parameters remain those of the calling context, +and no restoring is done\&. +.PP +If \fIfile\fP was not found the return status is 127; if \fIfile\fP was found +but contained a syntax error the return status is 126; else the return +status is the exit status of the last command executed\&. +.RE +.TP +\fB:\fP [ \fIarg\fP \&.\&.\&. ] +This command does nothing, although normal argument expansions is performed +which may have effects on shell parameters\&. A zero exit status is returned\&. +.TP +\fBalias\fP [ {\fB+\fP|\fB\-\fP}\fBgmrsL\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +For each \fIname\fP with a corresponding \fIvalue\fP, define an alias +with that value\&. A trailing space in \fIvalue\fP causes the next word +to be checked for alias expansion\&. If the \fB\-g\fP flag is present, +define a global alias; global aliases are expanded even if they do not +occur in command position\&. +.RS +.PP +If the \fB\-s\fP flag is present, define a suffix alias: if the command +word on a command line is in the form `\fItext\fP\fB\&.\fP\fIname\fP\&', where +\fItext\fP is any non\-empty string, it is replaced by the text +`\fIvalue\fP \fItext\fP\fB\&.\fP\fIname\fP\&'\&. Note that \fIname\fP is treated as +a literal string, not a pattern\&. A trailing space in \fIvalue\fP is not +special in this case\&. For example, +.PP +.RS +.nf +\fBalias \-s ps=\&'gv \-\-'\fP +.fi +.RE +.PP +will cause the command `\fB*\&.ps\fP\&' to be expanded to `\fBgv \-\- *\&.ps\fP'\&. As +alias expansion is carried out earlier than globbing, the `\fB*\&.ps\fP\&' will +then be expanded\&. Suffix aliases constitute a different name space from +other aliases (so in the above example it is still possible +to create an alias for the command \fBps\fP) and the two sets are never +listed together\&. +.PP +For each \fIname\fP with no \fIvalue\fP, +print the value of \fIname\fP, if any\&. With no arguments, print all +currently defined aliases other than suffix aliases\&. If the \fB\-m\fP flag +is given the arguments are taken as patterns (they should be quoted to +preserve them from being interpreted as glob patterns), and the aliases +matching these patterns are printed\&. When printing aliases and one of +the \fB\-g\fP, \fB\-r\fP or \fB\-s\fP flags is present, restrict the printing to +global, regular or suffix aliases, respectively; a regular alias is one +which is neither a global nor a suffix alias\&. Using `\fB+\fP\&' +instead of `\fB\-\fP\&', or ending the option list with a single +`\fB+\fP\&', prevents the values of the aliases from being printed\&. +.PP +If the \fB\-L\fP flag is present, then print each +alias in a manner suitable for putting in a startup script\&. The exit +status is nonzero if a \fIname\fP (with no \fIvalue\fP) is given for +which no alias has been defined\&. +.PP +For more on aliases, include common problems, see +the section ALIASING in \fIzshmisc\fP(1)\&. +.RE +.TP +\fBautoload\fP [ {\fB+\fP|\fB\-\fP}\fBRTUXdkmrtWz\fP ] [ \fB\-w\fP ] [ \fIname\fP \&.\&.\&. ] +See the section `Autoloading Functions\&' in \fIzshmisc\fP(1) for full details\&. The \fBfpath\fP parameter +will be searched to find the function definition when the function is +first referenced\&. +.RS +.PP +If \fIname\fP consists of an absolute path, the function is defined to +load from the file given (searching as usual for dump files in the given +location)\&. The name of the function is the basename (non\-directory +part) of the file\&. It is normally an error if the function is not found +in the given location; however, if the option \fB\-d\fP is given, searching +for the function defaults to \fB$fpath\fP\&. If a function is loaded by +absolute path, any functions loaded from it that are marked for +\fBautoload\fP without an absolute path have the load path of the parent +function temporarily prepended to \fB$fpath\fP\&. +.PP +If the option \fB\-r\fP or \fB\-R\fP is given, the function is searched for +immediately and the location is recorded internally for use when the +function is executed; a relative path is expanded using the value of +\fB$PWD\fP\&. This protects against a change to \fB$fpath\fP after the call +to \fBautoload\fP\&. With \fB\-r\fP, if the function is not found, it is +silently left unresolved until execution; with \fB\-R\fP, an error message +is printed and command processing aborted immediately the search fails, +i\&.e\&. at the \fBautoload\fP command rather than at function execution\&.\&. +.PP +The flag \fB\-X\fP may be used only inside a shell function\&. It causes the +calling function to be marked for autoloading and then immediately +loaded and executed, with the current array of positional parameters as +arguments\&. This replaces the previous definition of the function\&. If +no function definition is found, an error is printed and the function +remains undefined and marked for autoloading\&. If an argument is given, +it is used as a directory (i\&.e\&. it does not include the name of the +function) in which the function is to be found; this may be combined +with the \fB\-d\fP option to allow the function search to default to \fB$fpath\fP +if it is not in the given location\&. +.PP +The flag \fB+X\fP attempts to load each \fIname\fP as an autoloaded function, +but does \fInot\fP execute it\&. The exit status is zero (success) if the +function was not previously defined \fIand\fP a definition for it was found\&. +This does \fInot\fP replace any existing definition of the function\&. The +exit status is nonzero (failure) if the function was already defined or +when no definition was found\&. In the latter case the function remains +undefined and marked for autoloading\&. If ksh\-style autoloading is +enabled, the function created will contain the contents of the file +plus a call to the function itself appended to it, thus giving normal +ksh autoloading behaviour on the first call to the function\&. +If the \fB\-m\fP flag is also given each \fIname\fP is treated as a +pattern and all functions already marked for autoload that match the +pattern are loaded\&. +.PP +With the \fB\-t\fP flag, turn on execution tracing; with \fB\-T\fP, turn on +execution tracing only for the current function, turning it off on entry +to any called functions that do not also have tracing enabled\&. +.PP +With the \fB\-U\fP flag, alias expansion is suppressed when the function is +loaded\&. +.PP +With the \fB\-w\fP flag, the \fIname\fPs are taken as names of files compiled +with the \fBzcompile\fP builtin, and all functions defined in them are +marked for autoloading\&. +.PP +The flags \fB\-z\fP and \fB\-k\fP mark the function to be autoloaded using the +zsh or ksh style, as if the option \fBKSH_AUTOLOAD\fP were unset or were +set, respectively\&. The flags override the setting of the option at the +time the function is loaded\&. +.PP +Note that the \fBautoload\fP command makes no attempt to ensure the +shell options set during the loading or execution of the file have +any particular value\&. For this, the \fBemulate\fP command can be used: +.PP +.RS +.nf +\fBemulate zsh \-c \&'autoload \-Uz \fIfunc\fP'\fP +.fi +.RE +.PP +arranges that when \fIfunc\fP is loaded the shell is in native \fBzsh\fP +emulation, and this emulation is also applied when \fIfunc\fP is run\&. +.PP +Some of the functions of \fBautoload\fP are also provided by \fBfunctions +\-u\fP or \fBfunctions \-U\fP, but \fBautoload\fP is a more comprehensive +interface\&. +.RE +.TP +.PD 0 +\fBbg\fP [ \fIjob\fP \&.\&.\&. ] +.TP +.PD +\fIjob\fP \&.\&.\&. \fB&\fP +Put each specified \fIjob\fP in the background, +or the current job if none is specified\&. +.TP +\fBbindkey\fP +See the section `Zle Builtins\&' in \fIzshzle\fP(1)\&. +.TP +\fBbreak\fP [ \fIn\fP ] +Exit from an enclosing \fBfor\fP, \fBwhile\fP, +\fBuntil\fP, \fBselect\fP or \fBrepeat\fP loop\&. If an arithmetic expression \fIn\fP +is specified, then break \fIn\fP levels instead of just one\&. +.TP +\fBbuiltin\fP \fIname\fP [ \fIargs\fP \&.\&.\&. ] +Executes the builtin \fIname\fP, with the given \fIargs\fP\&. +.TP +\fBbye\fP +Same as \fBexit\fP\&. +.TP +\fBcap\fP +See the section `The zsh/cap Module\&' in \fIzshmodules\fP(1)\&. +.TP +.PD 0 +\fBcd\fP [ \fB\-qsLP\fP ] [ \fIarg\fP ] +.TP +.PD 0 +\fBcd\fP [ \fB\-qsLP\fP ] \fIold\fP \fInew\fP +.TP +.PD +\fBcd\fP [ \fB\-qsLP\fP ] {\fB+\fP|\fB\-\fP}\fIn\fP +Change the current directory\&. In the first form, change the +current directory to \fIarg\fP, or to the value of \fB$HOME\fP if +\fIarg\fP is not specified\&. If \fIarg\fP is `\fB\-\fP\&', change to the +previous directory\&. +.RS +.PP +Otherwise, if \fIarg\fP begins with a slash, attempt to change to the +directory given by \fIarg\fP\&. +.PP +If \fIarg\fP does not begin with a slash, the behaviour depends on whether +the current directory `\fB\&.\fP\&' occurs in the list of directories contained +in the shell parameter \fBcdpath\fP\&. If it does not, first attempt to change +to the directory \fIarg\fP under the current directory, and if that fails +but \fBcdpath\fP is set and contains at least one element attempt to change +to the directory \fIarg\fP under each component of \fBcdpath\fP in turn until +successful\&. If `\fB\&.\fP\&' occurs in \fBcdpath\fP, then \fBcdpath\fP is searched +strictly in order so that `\fB\&.\fP\&' is only tried at the appropriate point\&. +.PP +The order of testing \fBcdpath\fP is modified if the option \fBPOSIX_CD\fP +is set, as described in the documentation for the option\&. +.PP +If no directory is found, the option \fBCDABLE_VARS\fP is set, and a +parameter named \fIarg\fP exists whose value begins with a slash, treat its +value as the directory\&. In that case, the parameter is added to the named +directory hash table\&. +.PP +The second form of \fBcd\fP substitutes the string \fInew\fP +for the string \fIold\fP in the name of the current directory, +and tries to change to this new directory\&. +.PP +The third form of \fBcd\fP extracts an entry from the directory +stack, and changes to that directory\&. An argument of the form +`\fB+\fP\fIn\fP\&' identifies a stack entry by counting from the left +of the list shown by the \fBdirs\fP command, starting with zero\&. +An argument of the form `\fB\-\fP\fIn\fP\&' counts from the right\&. +If the \fBPUSHD_MINUS\fP option is set, the meanings of `\fB+\fP\&' +and `\fB\-\fP\&' in this context are swapped\&. +If the \fBPOSIX_CD\fP option is set, this form of \fBcd\fP is not recognised +and will be interpreted as the first form\&. +.PP +If the \fB\-q\fP (quiet) option is specified, the hook function \fBchpwd\fP +and the functions in the array \fBchpwd_functions\fP are not called\&. +This is useful for calls to \fBcd\fP that do not change the environment +seen by an interactive user\&. +.PP +If the \fB\-s\fP option is specified, \fBcd\fP refuses to change the current +directory if the given pathname contains symlinks\&. If the \fB\-P\fP option +is given or the \fBCHASE_LINKS\fP option is set, symbolic links are resolved +to their true values\&. If the \fB\-L\fP option is given symbolic links are +retained in the directory (and not resolved) regardless of the state of +the \fBCHASE_LINKS\fP option\&. +.RE +.TP +\fBchdir\fP +Same as \fBcd\fP\&. +.TP +\fBclone\fP +See the section `The zsh/clone Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcommand\fP [ \fB\-pvV\fP ] \fIsimple command\fP +The simple command argument is taken as an external command instead of +a function or builtin and is executed\&. If the \fBPOSIX_BUILTINS\fP option +is set, builtins will also be executed but certain special properties +of them are suppressed\&. The \fB\-p\fP flag causes a default path to be +searched instead of that in \fB$path\fP\&. With the \fB\-v\fP flag, \fBcommand\fP +is similar to \fBwhence\fP and with \fB\-V\fP, it is equivalent to \fBwhence +\-v\fP\&. +.RS +.PP +See also the section `Precommand Modifiers\&' in \fIzshmisc\fP(1)\&. +.RE +.TP +\fBcomparguments\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompcall\fP +See the section `The zsh/compctl Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompctl\fP +See the section `The zsh/compctl Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompdescribe\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompfiles\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompgroups\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompquote\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcomptags\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcomptry\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcompvalues\fP +See the section `The zsh/computil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBcontinue\fP [ \fIn\fP ] +Resume the next iteration of the enclosing +\fBfor\fP, \fBwhile\fP, \fBuntil\fP, \fBselect\fP or +\fBrepeat\fP loop\&. If an arithmetic expression \fIn\fP is specified, break out of +\fIn\fP\-1 loops and resume at the \fIn\fPth enclosing loop\&. +.TP +\fBdeclare\fP +Same as \fBtypeset\fP\&. +.TP +.PD 0 +\fBdirs\fP [ \fB\-c\fP ] [ \fIarg\fP \&.\&.\&. ] +.TP +.PD +\fBdirs\fP [ \fB\-lpv\fP ] +With no arguments, print the contents of the directory stack\&. +Directories are added to this stack with the \fBpushd\fP command, +and removed with the \fBcd\fP or \fBpopd\fP commands\&. +If arguments are specified, load them onto the directory stack, +replacing anything that was there, and push the current directory +onto the stack\&. +.RS +.PP +.PD 0 +.TP +.PD +\fB\-c\fP +clear the directory stack\&. +.TP +\fB\-l\fP +print directory names in full instead of using of using \fB~\fP expressions (see \fIDynamic\fP and \fIStatic named directories\fP in \fIzshexpn\fP(1))\&. +.TP +\fB\-p\fP +print directory entries one per line\&. +.TP +\fB\-v\fP +number the directories in the stack when printing\&. +.PP +.RE +.TP +\fBdisable\fP [ \fB\-afmprs\fP ] \fIname\fP \&.\&.\&. +Temporarily disable the \fIname\fPd hash table elements or patterns\&. The default +is to disable builtin commands\&. This allows you to use an external +command with the same name as a builtin command\&. The \fB\-a\fP option +causes \fBdisable\fP to act on regular or global aliases\&. The \fB\-s\fP +option causes \fBdisable\fP to act on suffix aliases\&. The \fB\-f\fP option causes +\fBdisable\fP to act on shell functions\&. The \fB\-r\fP options causes +\fBdisable\fP to act on reserved words\&. Without arguments all disabled +hash table elements from the corresponding hash table are printed\&. +With the \fB\-m\fP flag the arguments are taken as patterns (which should be +quoted to prevent them from undergoing filename expansion), and all hash +table elements from the corresponding hash table matching these patterns +are disabled\&. Disabled objects can be enabled with the \fBenable\fP +command\&. +.RS +.PP +With the option \fB\-p\fP, \fIname\fP \&.\&.\&. refer to elements of the +shell\&'s pattern syntax as described in the section `Filename Generation'\&. +Certain elements can be disabled separately, as given below\&. +.PP +Note that patterns +not allowed by the current settings for the options \fBEXTENDED_GLOB\fP, +\fBKSH_GLOB\fP and \fBSH_GLOB\fP are never enabled, regardless of the +setting here\&. For example, if \fBEXTENDED_GLOB\fP is not active, +the pattern \fB^\fP is ineffective even if `\fBdisable \-p "^"\fP\&' has +not been issued\&. The list below indicates any option settings +that restrict the use of the pattern\&. It should be noted that +setting \fBSH_GLOB\fP has a wider effect than merely disabling patterns +as certain expressions, in particular those involving parentheses, +are parsed differently\&. +.PP +The following patterns may be disabled; all +the strings need quoting on the command line to prevent them from +being interpreted immediately as patterns and the patterns are +shown below in single quotes as a reminder\&. +.PP +.PD 0 +.TP +.PD +\fB\&'?'\fP +The pattern character \fB?\fP wherever it occurs, including when preceding +a parenthesis with \fBKSH_GLOB\fP\&. +.TP +\fB\&'*'\fP +The pattern character \fB*\fP wherever it occurs, including recursive +globbing and when preceding a parenthesis with \fBKSH_GLOB\fP\&. +.TP +\fB\&'['\fP +Character classes\&. +.TP +\fB\&'<'\fP (\fBNO_SH_GLOB\fP) +Numeric ranges\&. +.TP +\fB\&'|'\fP (\fBNO_SH_GLOB\fP) +Alternation in grouped patterns, case statements, or KSH_GLOB +parenthesised expressions\&. +.TP +\fB\&'('\fP (\fBNO_SH_GLOB\fP) +Grouping using single parentheses\&. Disabling this does not disable the +use of parentheses for \fBKSH_GLOB\fP where they are introduced by a +special character, nor for glob qualifiers (use `\fBsetopt +NO_BARE_GLOB_QUAL\fP\&' to disable glob qualifiers that use parentheses +only)\&. +.TP +\fB\&'~'\fP (\fBEXTENDED_GLOB\fP) +Exclusion in the form \fIA\fP\fB~\fP\fIB\fP\&. +.TP +\fB\&'^'\fP (\fBEXTENDED_GLOB\fP) +Exclusion in the form \fIA\fP\fB^\fP\fIB\fP\&. +.TP +\fB\&'#'\fP (\fBEXTENDED_GLOB\fP) +The pattern character \fB#\fP wherever it occurs, both for +repetition of a previous pattern and for indicating globbing flags\&. +.TP +\fB\&'?('\fP (\fBKSH_GLOB\fP) +The grouping form \fB?(\fP\fI\&.\&.\&.\fP\fB)\fP\&. Note this is also +disabled if \fB\&'?'\fP is disabled\&. +.TP +\fB\&'*('\fP (\fBKSH_GLOB\fP) +The grouping form \fB*(\fP\fI\&.\&.\&.\fP\fB)\fP\&. Note this is also +disabled if \fB\&'*'\fP is disabled\&. +.TP +\fB\&'+('\fP (\fBKSH_GLOB\fP) +The grouping form \fB+(\fP\fI\&.\&.\&.\fP\fB)\fP\&. +.TP +\fB\&'!('\fP (\fBKSH_GLOB\fP) +The grouping form \fB!(\fP\fI\&.\&.\&.\fP\fB)\fP\&. +.TP +\fB\&'@('\fP (\fBKSH_GLOB\fP) +The grouping form \fB@(\fP\fI\&.\&.\&.\fP\fB)\fP\&. +.RE +.TP +.PD 0 +\fBdisown\fP [ \fIjob\fP \&.\&.\&. ] +.TP +.PD 0 +\fIjob\fP \&.\&.\&. \fB&|\fP +.TP +.PD +\fIjob\fP \&.\&.\&. \fB&!\fP +Remove the specified \fIjob\fPs from the job table; the shell will +no longer report their status, and will not complain if you +try to exit an interactive shell with them running or stopped\&. +If no \fIjob\fP is specified, disown the current job\&. +.RS +.PP +If the \fIjob\fPs are currently stopped and the \fBAUTO_CONTINUE\fP option +is not set, a warning is printed containing information about how to +make them running after they have been disowned\&. If one of the latter +two forms is used, the \fIjob\fPs will automatically be made running, +independent of the setting of the \fBAUTO_CONTINUE\fP option\&. +.RE +.TP +\fBecho\fP [ \fB\-neE\fP ] [ \fIarg\fP \&.\&.\&. ] +Write each \fIarg\fP on the standard output, with a space separating +each one\&. +If the \fB\-n\fP flag is not present, print a newline at the end\&. +\fBecho\fP recognizes the following escape sequences: +.RS +.PP +.PD 0 +.TP +\fB\ea\fP +bell character +.TP +\fB\eb\fP +backspace +.TP +\fB\ec\fP +suppress subsequent characters and final newline +.TP +\fB\ee\fP +escape +.TP +\fB\ef\fP +form feed +.TP +\fB\en\fP +linefeed (newline) +.TP +\fB\er\fP +carriage return +.TP +\fB\et\fP +horizontal tab +.TP +\fB\ev\fP +vertical tab +.TP +\fB\e\e\fP +backslash +.TP +\fB\e0\fP\fINNN\fP +character code in octal +.TP +\fB\ex\fP\fINN\fP +character code in hexadecimal +.TP +\fB\eu\fP\fINNNN\fP +unicode character code in hexadecimal +.TP +\fB\eU\fP\fINNNNNNNN\fP +unicode character code in hexadecimal +.PD +.PP +The \fB\-E\fP flag, or the \fBBSD_ECHO\fP option, can be used to disable +these escape sequences\&. In the latter case, \fB\-e\fP flag can be used to +enable them\&. +.PP +Note that for standards compliance a double dash does not terminate +option processing; instead, it is printed directly\&. However, a +single dash does terminate option processing, so the first dash, +possibly following options, is not printed, but everything following it +is printed as an argument\&. The single dash behaviour is different +from other shells\&. For a more portable way of printing text, see +\fBprintf\fP, and for a more controllable way of printing text within zsh, +see \fBprint\fP\&. +.RE +.TP +\fBechotc\fP +See the section `The zsh/termcap Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBechoti\fP +See the section `The zsh/terminfo Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBemulate\fP [ \fB\-lLR\fP ] [ {\fBzsh\fP|\fBsh\fP|\fBksh\fP|\fBcsh\fP} [ \fIflags\fP \&.\&.\&. ] ] +Without any argument print current emulation mode\&. +.RS +.PP +With single argument set up zsh options to emulate the specified shell +as much as possible\&. +\fBcsh\fP will never be fully emulated\&. +If the argument is not one of the shells listed above, \fBzsh\fP +will be used as a default; more precisely, the tests performed on the +argument are the same as those used to determine the emulation at startup +based on the shell name, see +the section COMPATIBILITY in \fIzsh\fP(1) +\&. In addition to setting shell options, the command also restores +the pristine state of pattern enables, as if all patterns had been +enabled using \fBenable \-p\fP\&. +.PP +If the \fBemulate\fP command occurs inside a function that has been +marked for execution tracing with \fBfunctions \-t\fP then the \fBxtrace\fP +option will be turned on regardless of emulation mode or other options\&. +Note that code executed inside the function by the \fB\&.\fP, \fBsource\fP, or +\fBeval\fP commands is not considered to be running directly from the +function, hence does not provoke this behaviour\&. +.PP +If the \fB\-R\fP switch is given, all settable options +are reset to their default value corresponding to the specified emulation +mode, except for certain options describing the interactive +environment; otherwise, only those options likely to cause portability +problems in scripts and functions are altered\&. If the \fB\-L\fP switch is given, +the options \fBLOCAL_OPTIONS\fP, \fBLOCAL_PATTERNS\fP and \fBLOCAL_TRAPS\fP +will be set as +well, causing the effects of the \fBemulate\fP command and any \fBsetopt\fP, +\fBdisable \-p\fP or \fBenable \-p\fP, and \fBtrap\fP commands to be local to +the immediately surrounding shell +function, if any; normally these options are turned off in all emulation +modes except \fBksh\fP\&. The \fB\-L\fP switch is mutually exclusive with the +use of \fB\-c\fP in \fIflags\fP\&. +.PP +If there is a single argument and the \fB\-l\fP switch is given, the +options that would be set or unset (the latter indicated with the prefix +`\fBno\fP\&') are listed\&. \fB\-l\fP can be combined with \fB\-L\fP or \fB\-R\fP and +the list will be modified in the appropriate way\&. Note the list does +not depend on the current setting of options, i\&.e\&. it includes all +options that may in principle change, not just those that would actually +change\&. +.PP +The \fIflags\fP may be any of the invocation\-time flags described in +the section INVOCATION in \fIzsh\fP(1), +except that `\fB\-o EMACS\fP\&' and `\fB\-o VI\fP' may not be used\&. Flags such +as `\fB+r\fP\&'/`\fB+o RESTRICTED\fP' may be prohibited in some circumstances\&. +.PP +If \fB\-c\fP \fIarg\fP appears in \fIflags\fP, \fIarg\fP is evaluated while the +requested emulation is temporarily in effect\&. In this case the emulation +mode and all options are restored to their previous values before +\fBemulate\fP returns\&. The \fB\-R\fP switch may precede the name of the shell +to emulate; note this has a meaning distinct from including \fB\-R\fP in +\fIflags\fP\&. +.PP +Use of \fB\-c\fP enables `sticky\&' emulation mode for functions defined +within the evaluated expression: the emulation mode is associated +thereafter with the function so that whenever the function is executed +the emulation (respecting the \fB\-R\fP switch, if present) and all +options are set (and pattern disables cleared) +before entry to the function, and the state is restored after exit\&. +If the function is called when the sticky emulation is already in +effect, either within an `\fBemulate\fP \fIshell\fP \fB\-c\fP\&' expression or +within another function with the same sticky emulation, entry and exit +from the function do not cause options to be altered (except due to +standard processing such as the \fBLOCAL_OPTIONS\fP option)\&. This also +applies to functions marked for autoload within the sticky emulation; +the appropriate set of options will be applied at the point the +function is loaded as well as when it is run\&. +.PP +For example: +.PP +.RS +.nf +\fBemulate sh \-c \&'fni() { setopt cshnullglob; } +fno() { fni; }\&' +fno\fP +.fi +.RE +.PP +The two functions \fBfni\fP and \fBfno\fP are defined with sticky \fBsh\fP +emulation\&. \fBfno\fP is then executed, causing options associated +with emulations to be set to their values in \fBsh\fP\&. \fBfno\fP then +calls \fBfni\fP; because \fBfni\fP is also marked for sticky \fBsh\fP +emulation, no option changes take place on entry to or exit from it\&. +Hence the option \fBcshnullglob\fP, turned off by \fBsh\fP emulation, will +be turned on within \fBfni\fP and remain on return to \fBfno\fP\&. On exit +from \fBfno\fP, the emulation mode and all options will be restored to the +state they were in before entry to the temporary emulation\&. +.PP +The documentation above is typically sufficient for the intended +purpose of executing code designed for other shells in a suitable +environment\&. More detailed rules follow\&. +.PD 0 +.TP +1\&. +The sticky emulation environment provided by `\fBemulate\fP +\fIshell\fP \fB\-c\fP\&' is identical to that provided by entry to +a function marked for sticky emulation as a consequence of being +defined in such an environment\&. Hence, for example, the sticky +emulation is inherited by subfunctions defined within functions +with sticky emulation\&. +.TP +2\&. +No change of options takes place on entry to or exit from +functions that are not marked for sticky emulation, other than those +that would normally take place, even if those functions are called +within sticky emulation\&. +.TP +3\&. +No special handling is provided for functions marked for +\fBautoload\fP nor for functions present in wordcode created by +the \fBzcompile\fP command\&. +.TP +4\&. +The presence or absence of the \fB\-R\fP switch to \fBemulate\fP +corresponds to different sticky emulation modes, so for example +`\fBemulate sh \-c\fP\&', `\fBemulate \-R sh \-c\fP' and `\fBemulate csh \-c\fP' +are treated as three distinct sticky emulations\&. +.TP +5\&. +Difference in shell options supplied in addition to the +basic emulation also mean the sticky emulations are different, so for +example `\fBemulate zsh \-c\fP\&' and `\fBemulate zsh \-o cbases \-c\fP' are +treated as distinct sticky emulations\&. +.PD +.RE +.TP +\fBenable\fP [ \fB\-afmprs\fP ] \fIname\fP \&.\&.\&. +Enable the \fIname\fPd hash table elements, presumably disabled +earlier with \fBdisable\fP\&. The default is to enable builtin commands\&. +The \fB\-a\fP option causes \fBenable\fP to act on regular or global aliases\&. +The \fB\-s\fP option causes \fBenable\fP to act on suffix aliases\&. +The \fB\-f\fP option causes \fBenable\fP to act on shell functions\&. The \fB\-r\fP +option causes \fBenable\fP to act on reserved words\&. Without arguments +all enabled hash table elements from the corresponding hash table are +printed\&. With the \fB\-m\fP flag the arguments are taken as patterns +(should be quoted) and all hash table elements from the corresponding +hash table matching these patterns are enabled\&. Enabled objects can be +disabled with the \fBdisable\fP builtin command\&. +.RS +.PP +\fBenable \-p\fP reenables patterns disabled with \fBdisable \-p\fP\&. Note +that it does not override globbing options; for example, `\fBenable \-p +"~"\fP\&' does not cause the pattern character \fB~\fP to be active unless +the \fBEXTENDED_GLOB\fP option is also set\&. To enable all possible +patterns (so that they may be individually disabled with \fBdisable \-p\fP), +use `\fBsetopt EXTENDED_GLOB KSH_GLOB NO_SH_GLOB\fP\&'\&. +.RE +.TP +\fBeval\fP [ \fIarg\fP \&.\&.\&. ] +Read the arguments as input to the shell and execute the resulting +command(s) in the current shell process\&. The return status is +the same as if the commands had been executed directly by the shell; +if there are no \fIargs\fP or they contain no commands (i\&.e\&. are +an empty string or whitespace) the return status is zero\&. +.TP +\fBexec\fP [ \fB\-cl\fP ] [ \fB\-a\fP \fIargv0\fP ] [ \fIcommand\fP [ \fIarg\fP \&.\&.\&. ] ] +Replace the current shell with \fIcommand\fP rather than forking\&. +If \fIcommand\fP is a shell builtin command or a shell function, +the shell executes it, and exits when the command is complete\&. +.RS +.PP +With \fB\-c\fP clear the environment; with \fB\-l\fP prepend \fB\-\fP to the +\fBargv[0]\fP string of the command executed (to simulate a login shell); +with \fB\-a\fP \fIargv0\fP set the \fBargv[0]\fP string of the command +executed\&. +See the section `Precommand Modifiers\&' in \fIzshmisc\fP(1)\&. +.PP +If the option \fBPOSIX_BUILTINS\fP is set, \fIcommand\fP is never +interpreted as a shell builtin command or shell function\&. This +means further precommand modifiers such as \fBbuiltin\fP and +\fBnoglob\fP are also not interpreted within the shell\&. Hence +\fIcommand\fP is always found by searching the command path\&. +.PP +If \fIcommand\fP is omitted but any redirections are specified, +then the redirections will take effect in the current shell\&. +.RE +.TP +\fBexit\fP [ \fIn\fP ] +Exit the shell with the exit status specified by an arithmetic +expression \fIn\fP; if none +is specified, use the exit status from the last command executed\&. +An EOF condition will also cause the shell to exit, unless +the \fBIGNORE_EOF\fP option is set\&. +.RS +.PP +See notes at the end of +the section JOBS in \fIzshmisc\fP(1) for some possibly unexpected interactions +of the \fBexit\fP command with jobs\&. +.RE +.TP +\fBexport\fP [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +The specified \fIname\fPs are marked for automatic export +to the environment of subsequently executed commands\&. +Equivalent to \fBtypeset \-gx\fP\&. +If a parameter specified does not +already exist, it is created in the global scope\&. +.TP +\fBfalse\fP [ \fIarg\fP \&.\&.\&. ] +Do nothing and return an exit status of 1\&. + +.TP +.PD 0 +\fBfc\fP [ \fB\-e\fP \fIename\fP ] [ \fB\-LI\fP ] [ \fB\-m\fP \fImatch\fP ] [ \fIold\fP\fB=\fP\fInew\fP \&.\&.\&. ] [ \fIfirst\fP [ \fIlast\fP ] ] +.TP +.PD 0 +\fBfc \-l \fP[ \fB\-LI\fP ] [ \fB\-nrdfEiD\fP ] [ \fB\-t\fP \fItimefmt\fP ] [ \fB\-m\fP \fImatch\fP ] +.TP +.PD 0 +\fB \fP[ \fIold\fP\fB=\fP\fInew\fP \&.\&.\&. ] [ \fIfirst\fP [ \fIlast\fP ] ] +.TP +.PD 0 +\fBfc \-p \fP[ \fB\-a\fP ] [ \fIfilename\fP [ \fIhistsize\fP [ \fIsavehistsize\fP ] ] ] +.TP +.PD 0 +\fBfc\fP \fB\-P\fP +.TP +.PD +\fBfc\fP \fB\-ARWI\fP [ \fIfilename\fP ] +The \fBfc\fP command controls the interactive history mechanism\&. Note +that reading and writing of history options is only performed if the +shell is interactive\&. Usually this is detected automatically, but +it can be forced by setting the \fBinteractive\fP option when starting the +shell\&. +.RS +.PP +The first two forms of this command select a range of events from +\fIfirst\fP to \fIlast\fP from the history list\&. The arguments \fIfirst\fP +and \fIlast\fP may be specified as a number or as a string\&. A negative +number is used as an offset to the current history event number\&. A string +specifies the most recent event beginning with the given string\&. All +substitutions \fIold\fP\fB=\fP\fInew\fP, if any, are then performed on the +text of the events\&. +.PP +In addition to the number range, +.PD 0 +.TP +\fB\-I\fP +restricts to only internal events (not from \fB$HISTFILE\fP) +.TP +\fB\-L\fP +restricts to only local events (not from other shells, see +\fBSHARE_HISTORY\fP in \fIzshoptions\fP(1) \-\- note that \fB$HISTFILE\fP is +considered local when read at startup) +.TP +\fB\-m\fP +takes the first argument as a pattern (should be quoted) and +only the history events matching this pattern are considered +.PD +.PP +If \fIfirst\fP is not specified, it will be set to \-1 (the most recent +event), or to \-16 if the \fB\-l\fP flag is given\&. +If \fIlast\fP is not specified, it will be set to \fIfirst\fP, +or to \-1 if the \fB\-l\fP flag is given\&. +However, if the current event has added entries to the history with +`\fBprint \-s\fP\&' or `\fBfc \-R\fP', then the default \fIlast\fP for \fB\-l\fP +includes all new history entries since the current event began\&. +.PP +When the \fB\-l\fP flag is given, the resulting events are listed on +standard output\&. Otherwise the editor program specified by \fB\-e\fP \fIename\fP +is invoked on a file containing these history events\&. If \fB\-e\fP is not given, the +value of the parameter \fBFCEDIT\fP is used; if that is not set the value of +the parameter \fBEDITOR\fP is used; if that is not set a builtin default, +usually `\fBvi\fP\&' is used\&. If \fIename\fP is `\fB\-\fP', no editor is invoked\&. +When editing is complete, the edited command is executed\&. +.PP +The flag \fB\-r\fP reverses the order of the events and the +flag \fB\-n\fP suppresses event numbers when listing\&. +.PP +Also when listing, +.PD 0 +.TP +\fB\-d\fP +prints timestamps for each event +.TP +\fB\-f\fP +prints full time\-date stamps in the US +`\fIMM\fP\fB/\fP\fIDD\fP\fB/\fP\fIYY\fP \fIhh\fP\fB:\fP\fImm\fP\&' format +.TP +\fB\-E\fP +prints full time\-date stamps in the European +`\fIdd\fP\fB\&.\fP\fImm\fP\fB\&.\fP\fIyyyy\fP \fIhh\fP\fB:\fP\fImm\fP\&' format +.TP +\fB\-i\fP +prints full time\-date stamps in ISO8601 +`\fIyyyy\fP\fB\-\fP\fImm\fP\fB\-\fP\fIdd\fP \fIhh\fP\fB:\fP\fImm\fP\&' format +.TP +\fB\-t\fP \fIfmt\fP +prints time and date stamps in the given format; +\fIfmt\fP is formatted with the strftime function with the zsh extensions +described for the \fB%D{\fP\fIstring\fP\fB}\fP prompt format in +the section EXPANSION OF PROMPT SEQUENCES in \fIzshmisc\fP(1)\&. The resulting formatted string must be +no more than 256 characters or will not be printed +.PP +.TP +\fB\-D\fP +prints elapsed times; may be combined with one of the +options above +.PD +.PP +`\fBfc \-p\fP\&' pushes the current history list onto a stack and switches to a +new history list\&. If the \fB\-a\fP option is also specified, this history list +will be automatically popped when the current function scope is exited, which +is a much better solution than creating a trap function to call `\fBfc \-P\fP\&' +manually\&. If no arguments are specified, the history list is left empty, +\fB$HISTFILE\fP is unset, and \fB$HISTSIZE\fP & \fB$SAVEHIST\fP are set to their +default values\&. If one argument is given, \fB$HISTFILE\fP is set to that +filename, \fB$HISTSIZE\fP & \fB$SAVEHIST\fP are left unchanged, and the history +file is read in (if it exists) to initialize the new list\&. If a second +argument is specified, \fB$HISTSIZE\fP & \fB$SAVEHIST\fP are instead set to the +single specified numeric value\&. Finally, if a third argument is specified, +\fB$SAVEHIST\fP is set to a separate value from \fB$HISTSIZE\fP\&. You are free to +change these environment values for the new history list however you desire +in order to manipulate the new history list\&. +.PP +`\fBfc \-P\fP\&' pops the history list back to an older list saved by `\fBfc \-p\fP'\&. +The current list is saved to its \fB$HISTFILE\fP before it is destroyed +(assuming that \fB$HISTFILE\fP and \fB$SAVEHIST\fP are set appropriately, of +course)\&. The values of \fB$HISTFILE\fP, \fB$HISTSIZE\fP, and \fB$SAVEHIST\fP are +restored to the values they had when `\fBfc \-p\fP\&' was called\&. Note that this +restoration can conflict with making these variables "local", so your best +bet is to avoid local declarations for these variables in functions that use +`\fBfc \-p\fP\&'\&. The one other guaranteed\-safe combination is declaring these +variables to be local at the top of your function and using the automatic +option (\fB\-a\fP) with `\fBfc \-p\fP\&'\&. Finally, note that it is legal to manually +pop a push marked for automatic popping if you need to do so before the +function exits\&. +.PP +`\fBfc \-R\fP\&' reads the history from the given file, +`\fBfc \-W\fP\&' writes the history out to the given file, +and `\fBfc \-A\fP\&' appends the history out to the given file\&. +If no filename is specified, the \fB$HISTFILE\fP is assumed\&. +If the \fB\-I\fP option is added to \fB\-R\fP, only those events that are +not already contained within the internal history list are added\&. +If the \fB\-I\fP option is added to \fB\-A\fP or \fB\-W\fP, only those +events that are new since last incremental append/write to +the history file are appended/written\&. +In any case, the created file will have no more than \fB$SAVEHIST\fP +entries\&. +.RE +.TP +.PD 0 +\fBfg\fP [ \fIjob\fP \&.\&.\&. ] +.TP +.PD +\fIjob\fP \&.\&.\&. +Bring each specified \fIjob\fP in turn to the foreground\&. +If no \fIjob\fP is specified, resume the current job\&. +.TP +\fBfloat\fP [ {\fB+\fP|\fB\-\fP}\fBHghlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZ\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +Equivalent to \fBtypeset \-E\fP, except that options irrelevant to floating +point numbers are not permitted\&. +.TP +.PD 0 +\fBfunctions\fP [ {\fB+\fP|\fB\-\fP}\fBUkmtTuWz\fP ] [ \fB\-x\fP \fInum\fP ] [ \fIname\fP \&.\&.\&. ] +.TP +.PD 0 +\fBfunctions \-c\fP \fIoldfn\fP \fInewfn\fP +.TP +.PD 0 +\fBfunctions \-M\fP [\fB\-s\fP] \fImathfn\fP [ \fImin\fP [ \fImax\fP [ \fIshellfn\fP ] ] ] +.TP +.PD 0 +\fBfunctions \-M\fP [ \fB\-m\fP \fIpattern\fP \&.\&.\&. ] +.TP +.PD +\fBfunctions +M\fP [ \fB\-m\fP ] \fImathfn\fP \&.\&.\&. +Equivalent to \fBtypeset \-f\fP, with the exception of the \fB\-c\fP, \fB\-x\fP, +\fB\-M\fP and \fB\-W\fP options\&. For \fBfunctions \-u\fP and \fBfunctions \-U\fP, +see \fBautoload\fP, which provides additional options\&. +.RS +.PP +The \fB\-x\fP option indicates that any functions output will have +each leading tab for indentation, added by the shell to show syntactic +structure, expanded to the given number \fInum\fP of spaces\&. \fInum\fP +can also be 0 to suppress all indentation\&. +.PP +The \fB\-W\fP option turns on the option \fBWARN_NESTED_VAR\fP for the named +function or functions only\&. The option is turned off at the start of +nested functions (apart from anonoymous functions) unless the called +function also has the \fB\-W\fP attribute\&. +.PP +The \fB\-c\fP option causes \fIoldfn\fP to be copied to \fInewfn\fP\&. The +copy is efficiently handled internally by reference counting\&. If +\fIoldfn\fP was marked for autoload it is first loaded and if this +fails the copy fails\&. Either function may subsequently be redefined +without affecting the other\&. A typical idiom is that \fIoldfn\fP is the +name of a library shell function which is then redefined to call +\fBnewfn\fP, thereby installing a modified version of the function\&. +.PP +Use of the \fB\-M\fP option may not be combined with any of the options +handled by \fBtypeset \-f\fP\&. +.PP +\fBfunctions \-M\fP \fImathfn\fP defines \fImathfn\fP as the name of +a mathematical function recognised in all forms of arithmetical expressions; +see +the section `Arithmetic Evaluation\&' in \fIzshmisc\fP(1)\&. By default \fImathfn\fP may take +any number of comma\-separated arguments\&. If \fImin\fP is given, +it must have exactly \fImin\fP args; if \fImin\fP and \fImax\fP are +both given, it must have at least \fImin\fP and at most \fImax\fP +args\&. \fImax\fP may be \-1 to indicate that there is no upper limit\&. +.PP +By default the function is implemented by a shell function of the same +name; if \fIshellfn\fP is specified it gives the name of the corresponding +shell function while \fImathfn\fP remains the name used in arithmetical +expressions\&. The name of the function in \fB$0\fP is \fImathfn\fP (not +\fIshellfn\fP as would usually be the case), provided the option +\fBFUNCTION_ARGZERO\fP is in effect\&. The positional parameters in the shell +function correspond to the arguments of the mathematical function call\&. +The result of the last arithmetical expression evaluated +inside the shell function (even if it is a form that normally only returns +a status) gives the result of the mathematical function\&. +.PP +If the additional option \fB\-s\fP is given to \fBfunctions \-M\fP, the +argument to the function is a single string: anything between the +opening and matching closing parenthesis is passed to the function as a +single argument, even if it includes commas or white space\&. The minimum +and maximum argument specifiers must therefore be 1 if given\&. An empty +argument list is passed as a zero\-length string\&. +.PP +\fBfunctions \-M\fP with no arguments lists all such user\-defined functions in +the same form as a definition\&. With the additional option \fB\-m\fP and +a list of arguments, all functions whose \fImathfn\fP matches one of +the pattern arguments are listed\&. +.PP +\fBfunction +M\fP removes the list of mathematical functions; with the +additional option \fB\-m\fP the arguments are treated as patterns and +all functions whose \fImathfn\fP matches the pattern are removed\&. Note +that the shell function implementing the behaviour is not removed +(regardless of whether its name coincides with \fImathfn\fP)\&. +.PP +For example, the following prints the cube of 3: +.PP +.RS +.nf +\fBzmath_cube() { (( $1 * $1 * $1 )) } +functions \-M cube 1 1 zmath_cube +print $(( cube(3) ))\fP +.fi +.RE +.PP +The following string function takes a single argument, including +the commas, so prints 11: +.PP +.RS +.nf +\fBstringfn() { (( $#1 )) } +functions \-Ms stringfn +print $(( stringfn(foo,bar,rod) ))\fP +.fi +.RE +.RE +.TP +\fBgetcap\fP +See the section `The zsh/cap Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBgetln\fP [ \fB\-AclneE\fP ] \fIname\fP \&.\&.\&. +Read the top value from the buffer stack and put it in +the shell parameter \fIname\fP\&. Equivalent to +\fBread \-zr\fP\&. +.TP +\fBgetopts\fP \fIoptstring\fP \fIname\fP [ \fIarg\fP \&.\&.\&. ] +Checks the \fIarg\fPs for legal options\&. If the \fIarg\fPs are omitted, +use the positional parameters\&. A valid option argument +begins with a `\fB+\fP\&' or a `\fB\-\fP'\&. An argument not beginning with +a `\fB+\fP\&' or a `\fB\-\fP', or the argument `\fB\-\fP\fB\-\fP', ends the options\&. +Note that a single `\fB\-\fP\&' is not considered a valid option argument\&. +\fIoptstring\fP contains the letters that \fBgetopts\fP +recognizes\&. If a letter is followed by a `\fB:\fP\&', that option +requires an argument\&. The options can be +separated from the argument by blanks\&. +.RS +.PP +Each time it is invoked, \fBgetopts\fP places the option letter it finds +in the shell parameter \fIname\fP, prepended with a `\fB+\fP\&' when +\fIarg\fP begins with a `\fB+\fP\&'\&. The index of the next \fIarg\fP +is stored in \fBOPTIND\fP\&. The option argument, if any, +is stored in \fBOPTARG\fP\&. +.PP +The first option to be examined may be changed by explicitly assigning +to \fBOPTIND\fP\&. \fBOPTIND\fP has an initial value of \fB1\fP, and is +normally set to \fB1\fP upon entry to a shell function and restored +upon exit (this is disabled by the \fBPOSIX_BUILTINS\fP option)\&. \fBOPTARG\fP +is not reset and retains its value from the most recent call to +\fBgetopts\fP\&. If either of \fBOPTIND\fP or \fBOPTARG\fP is explicitly +unset, it remains unset, and the index or option argument is not +stored\&. The option itself is still stored in \fIname\fP in this case\&. +.PP +A leading `\fB:\fP\&' in \fIoptstring\fP causes \fBgetopts\fP to store the +letter of any invalid option in \fBOPTARG\fP, and to set \fIname\fP to +`\fB?\fP\&' for an unknown option and to `\fB:\fP' when a required argument is +missing\&. Otherwise, \fBgetopts\fP sets \fIname\fP to `\fB?\fP\&' and prints +an error message when an option is invalid\&. The exit status is +nonzero when there are no more options\&. +.RE +.TP +\fBhash\fP [ \fB\-Ldfmrv\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] ] \&.\&.\&. +\fBhash\fP can be used to directly modify the contents of the command +hash table, and the named directory hash table\&. Normally one would +modify these tables by modifying one\&'s \fBPATH\fP +(for the command hash table) or by creating appropriate shell parameters +(for the named directory hash table)\&. +The choice of hash table to work on is determined by the \fB\-d\fP option; +without the option the command hash table is used, and with the option the +named directory hash table is used\&. +.RS +.PP +A command \fIname\fP starting with a \fB/\fP is never hashed, whether by +explicit use of the \fBhash\fP command or otherwise\&. Such a command +is always found by direct look up in the file system\&. +.PP +Given no arguments, and neither the \fB\-r\fP or \fB\-f\fP options, +the selected hash table will be listed in full\&. +.PP +The \fB\-r\fP option causes the selected hash table to be emptied\&. +It will be subsequently rebuilt in the normal fashion\&. +The \fB\-f\fP option causes the selected hash table to be fully +rebuilt immediately\&. For the command hash table this hashes +all the absolute directories in the \fBPATH\fP, +and for the named directory hash table this adds all users\&' home directories\&. +These two options cannot be used with any arguments\&. +.PP +The \fB\-m\fP option causes the arguments to be taken as patterns +(which should be quoted) and the elements of the hash table +matching those patterns are printed\&. This is the only way to display +a limited selection of hash table elements\&. +.PP +For each \fIname\fP with a corresponding \fIvalue\fP, put `\fIname\fP\&' in +the selected hash table, associating it with the pathname `\fIvalue\fP\&'\&. +In the command hash table, this means that +whenever `\fIname\fP\&' is used as a command argument, the shell will try +to execute the file given by `\fIvalue\fP\&'\&. +In the named directory hash table, this means +that `\fIvalue\fP\&' may be referred to as `\fB~\fP\fIname\fP'\&. +.PP +For each \fIname\fP with no +corresponding \fIvalue\fP, attempt to add \fIname\fP to the hash table, +checking what the appropriate \fBvalue\fP is in the normal manner for +that hash table\&. If an appropriate \fBvalue\fP can\&'t be found, then +the hash table will be unchanged\&. +.PP +The \fB\-v\fP option causes hash table entries to be listed as they are +added by explicit specification\&. If has no effect if used with \fB\-f\fP\&. +.PP +If the \fB\-L\fP flag is present, then each hash table entry is printed in +the form of a call to hash\&. +.RE +.TP +\fBhistory\fP +Same as \fBfc \-l\fP\&. +.TP +\fBinteger\fP [ {\fB+\fP|\fB\-\fP}\fBHghlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBLRZi\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +Equivalent to \fBtypeset \-i\fP, except that options irrelevant to +integers are not permitted\&. +.TP +.PD 0 +\fBjobs\fP [ \fB\-dlprs\fP ] [ \fIjob\fP \&.\&.\&. ] +.TP +.PD +\fBjobs \-Z\fP \fIstring\fP +Lists information about each given job, or all jobs +if \fIjob\fP is omitted\&. The \fB\-l\fP flag lists process +IDs, and the \fB\-p\fP flag lists process groups\&. +If the \fB\-r\fP flag is specified only running jobs will be listed +and if the \fB\-s\fP flag is given only stopped jobs are shown\&. +If the \fB\-d\fP flag is given, the directory from which the job was +started (which may not be the current directory of the job) will also +be shown\&. +.RS +.PP +The \fB\-Z\fP option replaces the shell\&'s argument and environment space with +the given string, truncated if necessary to fit\&. This will normally be +visible in \fBps\fP (\fIps\fP(1)) listings\&. This feature is typically +used by daemons, to indicate their state\&. +.RE +.TP +.PD 0 +\fBkill\fP [ \fB\-s\fP \fIsignal_name\fP | \fB\-n\fP \fIsignal_number\fP | \fB\-\fP\fIsig\fP ] \fIjob\fP \&.\&.\&. +.TP +.PD +\fBkill\fP \fB\-l\fP [ \fIsig\fP \&.\&.\&. ] +Sends either \fBSIGTERM\fP or the specified signal to the given +jobs or processes\&. +Signals are given by number or by names, with or without the `\fBSIG\fP\&' +prefix\&. +If the signal being sent is not `\fBKILL\fP\&' or `\fBCONT\fP', then the job +will be sent a `\fBCONT\fP\&' signal if it is stopped\&. +The argument \fIjob\fP can be the process ID of a job +not in the job list\&. +In the second form, \fBkill \-l\fP, if \fIsig\fP is not +specified the signal names are listed\&. Otherwise, for each +\fIsig\fP that is a name, the corresponding signal number is +listed\&. For each \fIsig\fP that is a signal number or a number +representing the exit status of a process which was terminated or +stopped by a signal the name of the signal is printed\&. +.RS +.PP +On some systems, alternative signal names are allowed for a few signals\&. +Typical examples are \fBSIGCHLD\fP and \fBSIGCLD\fP or \fBSIGPOLL\fP and +\fBSIGIO\fP, assuming they correspond to the same signal number\&. \fBkill +\-l\fP will only list the preferred form, however \fBkill \-l\fP \fIalt\fP will +show if the alternative form corresponds to a signal number\&. For example, +under Linux \fBkill \-l IO\fP and \fBkill \-l POLL\fP both output 29, hence +\fBkill \-IO\fP and \fBkill \-POLL\fP have the same effect\&. +.PP +Many systems will allow process IDs to be negative to kill a process +group or zero to kill the current process group\&. +.RE +.TP +\fBlet\fP \fIarg\fP \&.\&.\&. +Evaluate each \fIarg\fP as an arithmetic expression\&. +See +the section `Arithmetic Evaluation\&' in \fIzshmisc\fP(1) +for a description of arithmetic expressions\&. The exit status is 0 if the +value of the last expression is nonzero, 1 if it is zero, and 2 if +an error occurred\&. +.TP +\fBlimit\fP [ \fB\-hs\fP ] [ \fIresource\fP [ \fIlimit\fP ] ] \&.\&.\&. +Set or display resource limits\&. Unless the \fB\-s\fP flag is given, +the limit applies only the children of the shell\&. If \fB\-s\fP is +given without other arguments, the resource limits of the current +shell is set to the previously set resource limits of the children\&. +.RS +.PP +If \fIlimit\fP is not specified, print the current limit placed +on \fIresource\fP, otherwise +set the limit to the specified value\&. If the \fB\-h\fP flag +is given, use hard limits instead of soft limits\&. +If no \fIresource\fP is given, print all limits\&. +.PP +When looping over multiple resources, the shell will abort immediately if +it detects a badly formed argument\&. However, if it fails to set a limit +for some other reason it will continue trying to set the remaining limits\&. +.PP +\fIresource\fP can be one of: +.PP +.PD 0 +.TP +\fBaddressspace\fP +Maximum amount of address space used\&. +.TP +\fBaiomemorylocked\fP +Maximum amount of memory locked in RAM for AIO operations\&. +.TP +\fBaiooperations\fP +Maximum number of AIO operations\&. +.TP +\fBcachedthreads\fP +Maximum number of cached threads\&. +.TP +\fBcoredumpsize\fP +Maximum size of a core dump\&. +.TP +\fBcputime\fP +Maximum CPU seconds per process\&. +.TP +\fBdatasize\fP +Maximum data size (including stack) for each process\&. +.TP +\fBdescriptors\fP +Maximum value for a file descriptor\&. +.TP +\fBfilesize\fP +Largest single file allowed\&. +.TP +\fBkqueues\fP +Maximum number of kqueues allocated\&. +.TP +\fBmaxproc\fP +Maximum number of processes\&. +.TP +\fBmaxpthreads\fP +Maximum number of threads per process\&. +.TP +\fBmemorylocked\fP +Maximum amount of memory locked in RAM\&. +.TP +\fBmemoryuse\fP +Maximum resident set size\&. +.TP +\fBmsgqueue\fP +Maximum number of bytes in POSIX message queues\&. +.TP +\fBposixlocks\fP +Maximum number of POSIX locks per user\&. +.TP +\fBpseudoterminals\fP +Maximum number of pseudo\-terminals\&. +.TP +\fBresident\fP +Maximum resident set size\&. +.TP +\fBsigpending\fP +Maximum number of pending signals\&. +.TP +\fBsockbufsize\fP +Maximum size of all socket buffers\&. +.TP +\fBstacksize\fP +Maximum stack size for each process\&. +.TP +\fBswapsize\fP +Maximum amount of swap used\&. +.TP +\fBvmemorysize\fP +Maximum amount of virtual memory\&. +.PD +.PP +Which of these resource limits are available depends on the system\&. +\fIresource\fP can be abbreviated to any unambiguous prefix\&. It +can also be an integer, which corresponds to the integer defined +for the resource by the operating system\&. +.PP +If argument corresponds to a number which is out of the range of the +resources configured into the shell, the shell will try to read or write +the limit anyway, and will report an error if this fails\&. As the shell +does not store such resources internally, an attempt to set the limit will +fail unless the \fB\-s\fP option is present\&. +.PP +\fIlimit\fP is a number, with an optional scaling factor, as follows: +.PP +.PD 0 +.TP +\fIn\fP\fBh\fP +hours +.TP +\fIn\fP\fBk\fP +kilobytes (default) +.TP +\fIn\fP\fBm\fP +megabytes or minutes +.TP +\fIn\fP\fBg\fP +gigabytes +.TP +[\fImm\fP\fB:\fP]\fIss\fP +minutes and seconds +.PD +.PP +The \fBlimit\fP command is not made available by default when the +shell starts in a mode emulating another shell\&. It can be made available +with the command `\fBzmodload \-F zsh/rlimits b:limit\fP\&'\&. +.RE +.TP +\fBlocal\fP [ {\fB+\fP|\fB\-\fP}\fBAHUahlprtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZi\fP [ \fIn\fP ] ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +Same as \fBtypeset\fP, except that the options \fB\-g\fP, and +\fB\-f\fP are not permitted\&. In this case the \fB\-x\fP option does not force +the use of \fB\-g\fP, i\&.e\&. exported variables will be local to functions\&. +.TP +\fBlog\fP +List all users currently logged in who are affected by +the current setting of the \fBwatch\fP parameter\&. +.TP +\fBlogout\fP [ \fIn\fP ] +Same as \fBexit\fP, except that it only works in a login shell\&. +.TP +\fBnoglob\fP \fIsimple command\fP +See the section `Precommand Modifiers\&' in \fIzshmisc\fP(1)\&. +.TP +\fBpopd\fP [ \fB\-q\fP ] [ {\fB+\fP|\fB\-\fP}\fIn\fP ] +Remove an entry from the directory stack, and perform a \fBcd\fP to +the new top directory\&. With no argument, the current top entry is +removed\&. An argument of the form `\fB+\fP\fIn\fP\&' identifies a stack +entry by counting from the left of the list shown by the \fBdirs\fP command, +starting with zero\&. An argument of the form \fB\-\fP\fIn\fP counts from the right\&. +If the \fBPUSHD_MINUS\fP option is set, the meanings of `\fB+\fP\&' and +`\fB\-\fP\&' in this context are swapped\&. +.RS +.PP +If the \fB\-q\fP (quiet) option is specified, the hook function \fBchpwd\fP +and the functions in the array \fB$chpwd_functions\fP are not called, +and the new directory stack is not printed\&. This is useful for calls to +\fBpopd\fP that do not change the environment seen by an interactive user\&. +.RE +.TP +.PD 0 +\fBprint \fP[ \fB\-abcDilmnNoOpPrsSz\fP ] [ \fB\-u\fP \fIn\fP ] [ \fB\-f\fP \fIformat\fP ] [ \fB\-C\fP \fIcols\fP ] +.TP +.PD +\fB \fP[ \fB\-v\fP \fIname\fP ] [ \fB\-xX\fP \fItabstop\fP ] [ \fB\-R\fP [ \fB\-en\fP ]] [ \fIarg\fP \&.\&.\&. ] +With the `\fB\-f\fP\&' option the arguments are printed as described by \fBprintf\fP\&. +With no flags or with the flag `\fB\-\fP\&', the arguments are printed on +the standard output as described by \fBecho\fP, with the following differences: +the escape sequence `\fB\eM\-\fP\fIx\fP\&' (or `\fB\eM\fP\fIx\fP') metafies the character +\fIx\fP (sets the highest bit), +`\fB\eC\-\fP\fIx\fP\&' (or `\fB\eC\fP\fIx\fP') produces a control character +(`\fB\eC\-@\fP\&' and `\fB\eC\-?\fP' give the characters NULL and delete), +a character code in octal is represented by `\fB\e\fP\fINNN\fP\&' +(instead of `\fB\e0\fP\fINNN\fP\&'), +and `\fB\eE\fP\&' is a synonym for `\fB\ee\fP'\&. +Finally, if not in an escape +sequence, `\fB\e\fP\&' escapes the following character and is not printed\&. +.RS +.PP +.PD 0 +.TP +.PD +\fB\-a\fP +Print arguments with the column incrementing first\&. Only useful with the +\fB\-c\fP and \fB\-C\fP options\&. +.TP +\fB\-b\fP +Recognize all the escape sequences defined for the \fBbindkey\fP command, +see +the section `Zle Builtins\&' in \fIzshzle\fP(1)\&. +.TP +\fB\-c\fP +Print the arguments in columns\&. Unless \fB\-a\fP is also given, arguments are +printed with the row incrementing first\&. +.TP +\fB\-C\fP \fIcols\fP +Print the arguments in \fIcols\fP columns\&. Unless \fB\-a\fP is also given, +arguments are printed with the row incrementing first\&. +.TP +\fB\-D\fP +Treat the arguments as paths, replacing directory prefixes with \fB~\fP +expressions corresponding to directory names, as appropriate\&. +.TP +\fB\-i\fP +If given together with \fB\-o\fP or \fB\-O\fP, sorting is performed +case\-independently\&. +.TP +\fB\-l\fP +Print the arguments separated by newlines instead of spaces\&. Note: if +the list of arguments is empty, \fBprint \-l\fP will still output one empty +line\&. To print a possibly\-empty list of arguments one per line, use +\fBprint \-C1\fP, as in `\fBprint \-rC1 \-\- "$list[@]"\fP\&'\&. +.TP +\fB\-m\fP +Take the first argument as a pattern (should be quoted), and remove +it from the argument list together with subsequent arguments that +do not match this pattern\&. +.TP +\fB\-n\fP +Do not add a newline to the output\&. +.TP +\fB\-N\fP +Print the arguments separated and terminated by nulls\&. Again, +\fBprint \-rNC1 \-\- "$list[@]"\fP is a canonical way to print an +arbitrary list as null\-delimited records\&. +.TP +\fB\-o\fP +Print the arguments sorted in ascending order\&. +.TP +\fB\-O\fP +Print the arguments sorted in descending order\&. +.TP +\fB\-p\fP +Print the arguments to the input of the coprocess\&. +.TP +\fB\-P\fP +Perform prompt expansion (see +EXPANSION OF PROMPT SEQUENCES in \fIzshmisc\fP(1))\&. +In combination with `\fB\-f\fP\&', +prompt escape sequences are parsed only within interpolated arguments, +not within the format string\&. +.TP +\fB\-r\fP +Ignore the escape conventions of \fBecho\fP\&. +.TP +\fB\-R\fP +Emulate the BSD \fBecho\fP command, which does not process escape sequences +unless the \fB\-e\fP flag is given\&. The \fB\-n\fP flag suppresses the trailing +newline\&. Only the \fB\-e\fP and \fB\-n\fP flags are recognized after +\fB\-R\fP; all other arguments and options are printed\&. +.TP +\fB\-s\fP +Place the results in the history list instead of on the standard output\&. +Each argument to the \fBprint\fP command is treated as a single word in the +history, regardless of its content\&. +.TP +\fB\-S\fP +Place the results in the history list instead of on the standard output\&. +In this case only a single argument is allowed; it will be split into +words as if it were a full shell command line\&. The effect is +similar to reading the line from a history file with the +\fBHIST_LEX_WORDS\fP option active\&. +.TP +\fB\-u\fP \fIn\fP +Print the arguments to file descriptor \fIn\fP\&. +.TP +\fB\-v\fP \fIname\fP +Store the printed arguments as the value of the parameter \fIname\fP\&. +.TP +\fB\-x\fP \fItab\-stop\fP +Expand leading tabs on each line of output in the printed string +assuming a tab stop every \fItab\-stop\fP characters\&. This is appropriate +for formatting code that may be indented with tabs\&. Note that leading +tabs of any argument to print, not just the first, are expanded, even if +\fBprint\fP is using spaces to separate arguments (the column count +is maintained across arguments but may be incorrect on output +owing to previous unexpanded tabs)\&. +.RS +.PP +The start of the output of each print command is assumed to be aligned +with a tab stop\&. Widths of multibyte characters are handled if the +option \fBMULTIBYTE\fP is in effect\&. This option is ignored if other +formatting options are in effect, namely column alignment or +\fBprintf\fP style, or if output is to a special location such as shell +history or the command line editor\&. +.RE +.TP +\fB\-X\fP \fItab\-stop\fP +This is similar to \fB\-x\fP, except that all tabs in the printed string +are expanded\&. This is appropriate if tabs in the arguments are +being used to produce a table format\&. +.TP +\fB\-z\fP +Push the arguments onto the editing buffer stack, separated by spaces\&. +.PP +If any of `\fB\-m\fP\&', `\fB\-o\fP' or `\fB\-O\fP' are used in combination with +`\fB\-f\fP\&' and there are no arguments (after the removal process in the +case of `\fB\-m\fP\&') then nothing is printed\&. +.RE +.TP +\fBprintf\fP [ \fB\-v\fP \fIname\fP ] \fIformat\fP [ \fIarg\fP \&.\&.\&. ] +Print the arguments according to the format specification\&. Formatting +rules are the same as used in C\&. The same escape sequences as for \fBecho\fP +are recognised in the format\&. All C conversion specifications ending in +one of \fBcsdiouxXeEfgGn\fP are handled\&. In addition to this, `\fB%b\fP\&' can be +used instead of `\fB%s\fP\&' to cause escape sequences in the argument to be +recognised and `\fB%q\fP\&' can be used to quote the argument in such a way +that allows it to be reused as shell input\&. With the numeric format +specifiers, if the corresponding argument starts with a quote character, +the numeric value of the following character is used as the number to +print; otherwise the argument is evaluated as an arithmetic expression\&. See +the section `Arithmetic Evaluation\&' in \fIzshmisc\fP(1) +for a description of arithmetic +expressions\&. With `\fB%n\fP\&', the corresponding argument is taken as an +identifier which is created as an integer parameter\&. +.RS +.PP +Normally, conversion specifications are applied to each argument in order +but they can explicitly specify the \fIn\fPth argument is to be used by +replacing `\fB%\fP\&' by `\fB%\fP\fIn\fP\fB$\fP' and `\fB*\fP' by `\fB*\fP\fIn\fP\fB$\fP'\&. +It is recommended that you do not mix references of this explicit style +with the normal style and the handling of such mixed styles may be subject +to future change\&. +.PP +If arguments remain unused after formatting, the format string is reused +until all arguments have been consumed\&. With the \fBprint\fP builtin, this +can be suppressed by using the \fB\-r\fP option\&. If more arguments are +required by the format than have been specified, the behaviour is as if +zero or an empty string had been specified as the argument\&. +.PP +The \fB\-v\fP option causes the output to be stored as the value of the +parameter \fIname\fP, instead of printed\&. If \fIname\fP is an array and +the format string is reused when consuming arguments then one +array element will be used for each use of the format string\&. +.RE +.TP +.PD 0 +\fBpushd\fP [ \fB\-qsLP\fP ] [ \fIarg\fP ] +.TP +.PD 0 +\fBpushd\fP [ \fB\-qsLP\fP ] \fIold\fP \fInew\fP +.TP +.PD +\fBpushd\fP [ \fB\-qsLP\fP ] {\fB+\fP|\fB\-\fP}\fIn\fP +Change the current directory, and push the old current directory +onto the directory stack\&. In the first form, change the +current directory to \fIarg\fP\&. +If \fIarg\fP is not specified, change to the second directory +on the stack (that is, exchange the top two entries), or +change to \fB$HOME\fP if the \fBPUSHD_TO_HOME\fP +option is set or if there is only one entry on the stack\&. +Otherwise, \fIarg\fP is interpreted as it would be by \fBcd\fP\&. +The meaning of \fIold\fP and \fInew\fP in the second form is also +the same as for \fBcd\fP\&. +.RS +.PP +The third form of \fBpushd\fP changes directory by rotating the +directory list\&. An argument of the form `\fB+\fP\fIn\fP\&' identifies a stack +entry by counting from the left of the list shown by the \fBdirs\fP +command, starting with zero\&. An argument of the form `\fB\-\fP\fIn\fP\&' counts +from the right\&. If the \fBPUSHD_MINUS\fP option is set, the meanings +of `\fB+\fP\&' and `\fB\-\fP' in this context are swapped\&. +.PP +If the \fB\-q\fP (quiet) option is specified, the hook function \fBchpwd\fP +and the functions in the array \fB$chpwd_functions\fP are not called, +and the new directory stack is not printed\&. This is useful for calls to +\fBpushd\fP that do not change the environment seen by an interactive user\&. +.PP +If the option \fB\-q\fP is not specified and the shell option \fBPUSHD_SILENT\fP +is not set, the directory stack will be printed after a \fBpushd\fP is +performed\&. +.PP +The options \fB\-s\fP, \fB\-L\fP and \fB\-P\fP have the same meanings as for the +\fBcd\fP builtin\&. +.RE +.TP +\fBpushln\fP [ \fIarg\fP \&.\&.\&. ] +Equivalent to \fBprint \-nz\fP\&. +.TP +\fBpwd\fP [ \fB\-rLP\fP ] +Print the absolute pathname of the current working directory\&. +If the \fB\-r\fP or the \fB\-P\fP flag is specified, or the \fBCHASE_LINKS\fP +option is set and the \fB\-L\fP flag is not given, the printed path will not +contain symbolic links\&. +.TP +\fBr\fP +Same as \fBfc \-e \-\fP\&. + +.TP +.PD 0 +\fBread \fP[ \fB\-rszpqAclneE\fP ] [ \fB\-t\fP [ \fInum\fP ] ] [ \fB\-k\fP [ \fInum\fP ] ] [ \fB\-d\fP \fIdelim\fP ] +.TP +.PD +\fB \fP[ \fB\-u\fP \fIn\fP ] [ \fIname\fP[\fB?\fP\fIprompt\fP] ] [ \fIname\fP \&.\&.\&. ] +Read one line and break it into fields using the characters +in \fB$IFS\fP as separators, except as noted below\&. +The first field is assigned to the first \fIname\fP, the second field +to the second \fIname\fP, etc\&., with leftover +fields assigned to the last \fIname\fP\&. +If \fIname\fP is omitted then +\fBREPLY\fP is used for scalars and \fBreply\fP for arrays\&. +.RS +.PP +.PD 0 +.TP +.PD +\fB\-r\fP +Raw mode: a `\fB\e\fP\&' at the end of a line does not signify line +continuation and backslashes in the line don\&'t quote the following +character and are not removed\&. +.TP +\fB\-s\fP +Don\&'t echo back characters if reading from the terminal\&. +.TP +\fB\-q\fP +Read only one character from the terminal and set \fIname\fP to +`\fBy\fP\&' if this character was `\fBy\fP' or `\fBY\fP' and to `\fBn\fP' otherwise\&. +With this flag set the return status is zero only if the character was +`\fBy\fP\&' or `\fBY\fP'\&. This option may be used with a timeout (see \fB\-t\fP); if +the read times out, or encounters end of file, status 2 is returned\&. Input is +read from the terminal unless one of \fB\-u\fP or \fB\-p\fP is present\&. This option +may also be used within zle widgets\&. +.TP +\fB\-k\fP [ \fInum\fP ] +Read only one (or \fInum\fP) characters\&. All are assigned to the first +\fIname\fP, without word splitting\&. This flag is ignored when \fB\-q\fP is +present\&. Input is read from the terminal unless one of \fB\-u\fP or \fB\-p\fP +is present\&. This option may also be used within zle widgets\&. +.RS +.PP +Note that despite the mnemonic `key\&' this option does read full +characters, which may consist of multiple bytes if the option +\fBMULTIBYTE\fP is set\&. +.RE +.TP +\fB\-z\fP +Read one entry from the editor buffer stack and assign it to the first +\fIname\fP, without word splitting\&. Text is pushed onto the stack with +`\fBprint \-z\fP\&' or with \fBpush\-line\fP from the line editor (see +\fIzshzle\fP(1))\&. This flag is ignored when the \fB\-k\fP or \fB\-q\fP flags are present\&. +.TP +.PD 0 +\fB\-e\fP +.TP +.PD +\fB\-E\fP +The input read is printed (echoed) to the standard output\&. If the \fB\-e\fP +flag is used, no input is assigned to the parameters\&. +.TP +\fB\-A\fP +The first \fIname\fP is taken as the name of an array and all words are +assigned to it\&. +.TP +.PD 0 +\fB\-c\fP +.TP +.PD +\fB\-l\fP +These flags are allowed only if called inside a +function used for completion (specified with the \fB\-K\fP flag to +\fBcompctl\fP)\&. If the \fB\-c\fP flag is given, the words of the +current command are read\&. If the \fB\-l\fP flag is given, the whole +line is assigned as a scalar\&. If both flags are present, \fB\-l\fP +is used and \fB\-c\fP is ignored\&. +.TP +\fB\-n\fP +Together with \fB\-c\fP, the number of the word the cursor is on is +read\&. With \fB\-l\fP, the index of the character the cursor is on is +read\&. Note that the command name is word number 1, not word 0, +and that when the cursor is at the end of the line, its character +index is the length of the line plus one\&. +.TP +\fB\-u\fP \fIn\fP +Input is read from file descriptor \fIn\fP\&. +.TP +\fB\-p\fP +Input is read from the coprocess\&. +.TP +\fB\-d\fP \fIdelim\fP +Input is terminated by the first character of \fIdelim\fP instead of +by newline\&. +.TP +\fB\-t\fP [ \fInum\fP ] +Test if input is available before attempting to read\&. If \fInum\fP +is present, it must begin with a digit and will be evaluated +to give a number of seconds, which may be a floating point number; +in this case the read times out if input is not available within this +time\&. If \fInum\fP is not present, it is taken to be zero, so that +\fBread\fP returns immediately if no input is available\&. +If no input is available, return status 1 and do not set any variables\&. + +This option is not available when reading from the editor buffer with +\fB\-z\fP, when called from within completion with \fB\-c\fP or \fB\-l\fP, with +\fB\-q\fP which clears the input queue before reading, or within zle where +other mechanisms should be used to test for input\&. + +Note that read does not attempt to alter the input processing mode\&. The +default mode is canonical input, in which an entire line is read at a time, +so usually `\fBread \-t\fP\&' will not read anything until an entire line has +been typed\&. However, when reading from the terminal with \fB\-k\fP +input is processed one key at a time; in this case, only availability of +the first character is tested, so that e\&.g\&. `\fBread \-t \-k 2\fP\&' can still +block on the second character\&. Use two instances of `\fBread \-t \-k\fP\&' if +this is not what is wanted\&. +.PP +If the first argument contains a `\fB?\fP\&', the remainder of this +word is used as a \fIprompt\fP on standard error when the shell +is interactive\&. +.PP +The value (exit status) of \fBread\fP is 1 when an end\-of\-file is +encountered, or when \fB\-c\fP or \fB\-l\fP is present and the command is +not called from a \fBcompctl\fP function, or as described for \fB\-q\fP\&. +Otherwise the value is 0\&. +.PP +The behavior of some combinations of the \fB\-k\fP, \fB\-p\fP, \fB\-q\fP, \fB\-u\fP +and \fB\-z\fP flags is undefined\&. Presently \fB\-q\fP cancels all the others, +\fB\-p\fP cancels \fB\-u\fP, \fB\-k\fP cancels \fB\-z\fP, and otherwise \fB\-z\fP +cancels both \fB\-p\fP and \fB\-u\fP\&. +.PP +The \fB\-c\fP or \fB\-l\fP flags cancel any and all of \fB\-kpquz\fP\&. +.RE +.TP +\fBreadonly\fP +Same as \fBtypeset \-r\fP\&. With the \fBPOSIX_BUILTINS\fP option set, same +as \fBtypeset \-gr\fP\&. +.TP +\fBrehash\fP +Same as \fBhash \-r\fP\&. +.TP +\fBreturn\fP [ \fIn\fP ] +Causes a shell function or `\fB\&.\fP\&' script to return to +the invoking script with the return status specified by +an arithmetic expression \fIn\fP\&. If \fIn\fP +is omitted, the return status is that of the last command +executed\&. +.RS +.PP +If \fBreturn\fP was executed from a trap in a \fBTRAP\fP\fINAL\fP function, +the effect is different for zero and non\-zero return status\&. With zero +status (or after an implicit return at the end of the trap), the shell +will return to whatever it was previously processing; with a non\-zero +status, the shell will behave as interrupted except that the return +status of the trap is retained\&. Note that the numeric value of the signal +which caused the trap is passed as the first argument, so the statement +`\fBreturn $((128+$1))\fP\&' will return the same status as if the signal +had not been trapped\&. +.RE +.TP +\fBsched\fP +See the section `The zsh/sched Module\&' in \fIzshmodules\fP(1)\&. + +.TP +.PD 0 +\fBset \fP[ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP [ \fIoption_name\fP ] ] \&.\&.\&. [ {\fB+\fP|\fB\-\fP}\fBA\fP [ \fIname\fP ] ] +.TP +.PD +\fB \fP[ \fIarg\fP \&.\&.\&. ] +Set the options for the shell and/or set the positional parameters, or +declare and set an array\&. If the \fB\-s\fP option is given, it causes the +specified arguments to be sorted before assigning them to the positional +parameters (or to the array \fIname\fP if \fB\-A\fP is used)\&. With \fB+s\fP +sort arguments in descending order\&. For the meaning of the other flags, see +\fIzshoptions\fP(1)\&. Flags may be specified by name using the \fB\-o\fP option\&. If no option +name is supplied with \fB\-o\fP, the current option states are printed: see +the description of \fBsetopt\fP below for more information on the format\&. +With \fB+o\fP they are printed in a form that can be used as input +to the shell\&. +.RS +.PP +If the \fB\-A\fP flag is specified, \fIname\fP is set to an array containing +the given \fIarg\fPs; if no \fIname\fP is specified, all arrays are printed +together with their values\&. +.PP +If \fB+A\fP is used and \fIname\fP is an array, the +given arguments will replace the initial elements of that array; if no +\fIname\fP is specified, all arrays are printed without their values\&. +.PP +The behaviour of arguments after \fB\-A\fP \fIname\fP or \fB+A\fP \fIname\fP +depends on whether the option \fBKSH_ARRAYS\fP is set\&. If it is not set, all +arguments following \fIname\fP are treated as values for the array, +regardless of their form\&. If the option is set, normal option processing +continues at that point; only regular arguments are treated as values for +the array\&. This means that +.PP +.RS +.nf +\fBset \-A array \-x \-\- foo\fP +.fi +.RE +.PP +sets \fBarray\fP to `\fB\-x \-\fP\fB\- foo\fP\&' if \fBKSH_ARRAYS\fP is not set, but sets +the array to \fBfoo\fP and turns on the option `\fB\-x\fP\&' if it is set\&. +.PP +If the \fB\-A\fP flag is not present, but there are arguments beyond the +options, the positional parameters are set\&. If the option list (if any) +is terminated by `\fB\-\fP\fB\-\fP\&', and there are no further arguments, the +positional parameters will be unset\&. +.PP +If no arguments and no `\fB\-\fP\fB\-\fP\&' are given, then the names and values of +all parameters are printed on the standard output\&. If the only argument is +`\fB+\fP\&', the names of all parameters are printed\&. +.PP +For historical reasons, `\fBset \-\fP\&' is treated as `\fBset +xv\fP' +and `\fBset \-\fP \fIargs\fP\&' as `\fBset +xv \-\-\fP \fIargs\fP' when in +any other emulation mode than zsh\&'s native mode\&. +.RE +.TP +\fBsetcap\fP +See the section `The zsh/cap Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBsetopt\fP [ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP \fIoption_name\fP ] [ \fB\-m\fP ] [ \fIname\fP \&.\&.\&. ] +Set the options for the shell\&. All options specified either +with flags or by name are set\&. +.RS +.PP +If no arguments are supplied, the names of all options currently set are +printed\&. The form is chosen so as to minimize the differences from the +default options for the current emulation (the default emulation being +native \fBzsh\fP, shown as \fB<Z>\fP in +\fIzshoptions\fP(1))\&. +Options that are on by default for the emulation are +shown with the prefix \fBno\fP only if they are off, while other options are +shown without the prefix \fBno\fP and only if they are on\&. In addition to +options changed from the default state by the user, any options activated +automatically by the shell (for example, \fBSHIN_STDIN\fP or \fBINTERACTIVE\fP) +will be shown in the list\&. The format is further modified by the option +\fBKSH_OPTION_PRINT\fP, however the rationale for choosing options with +or without the \fBno\fP prefix remains the same in this case\&. +.PP +If the \fB\-m\fP flag is given the arguments are taken as patterns +(which should be quoted to protect them from filename expansion), and all +options with names matching these patterns are set\&. +.PP +Note that a bad option name does not cause execution of subsequent shell +code to be aborted; this is behaviour is different from that of `\fBset +\-o\fP\&'\&. This is because \fBset\fP is regarded as a special builtin by the +POSIX standard, but \fBsetopt\fP is not\&. +.RE +.TP +\fBshift\fP [ \fB\-p\fP ] [ \fIn\fP ] [ \fIname\fP \&.\&.\&. ] +The positional parameters \fB${\fP\fIn\fP+1\fB}\fP \&.\&.\&. are renamed +to \fB$1\fP \&.\&.\&., where \fIn\fP is an arithmetic expression that +defaults to 1\&. +If any \fIname\fPs are given then the arrays with these names are +shifted instead of the positional parameters\&. +.RS +.PP +If the option \fB\-p\fP is given arguments are instead removed (popped) +from the end rather than the start of the array\&. +.RE +.TP +\fBsource\fP \fIfile\fP [ \fIarg\fP \&.\&.\&. ] +Same as `\fB\&.\fP\&', except that the current directory is always searched and +is always searched first, before directories in \fB$path\fP\&. +.TP +\fBstat\fP +See the section `The zsh/stat Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBsuspend\fP [ \fB\-f\fP ] +Suspend the execution of the shell (send it a \fBSIGTSTP\fP) +until it receives a \fBSIGCONT\fP\&. +Unless the \fB\-f\fP option is given, this will refuse to suspend a login shell\&. +.TP +.PD 0 +\fBtest\fP [ \fIarg\fP \&.\&.\&. ] +.TP +.PD +\fB[\fP [ \fIarg\fP \&.\&.\&. ] \fB]\fP +Like the system version of \fBtest\fP\&. Added for compatibility; +use conditional expressions instead (see the section `Conditional Expressions\&')\&. +The main differences between the conditional expression syntax and the +\fBtest\fP and \fB[\fP builtins are: these commands are not handled +syntactically, so for example an empty variable expansion may cause an +argument to be omitted; syntax errors cause status 2 to be returned instead +of a shell error; and arithmetic operators expect integer arguments rather +than arithmetic expressions\&. +.RS +.PP +The command attempts to implement POSIX and its extensions where these +are specified\&. Unfortunately there are intrinsic ambiguities in +the syntax; in particular there is no distinction between test operators +and strings that resemble them\&. The standard attempts to resolve these +for small numbers of arguments (up to four); for five or more arguments +compatibility cannot be relied on\&. Users are urged wherever possible to +use the `\fB[[\fP\&' test syntax which does not have these ambiguities\&. +.RE +.TP +\fBtimes\fP +Print the accumulated user and system times for the shell +and for processes run from the shell\&. +.TP +\fBtrap\fP [ \fIarg\fP ] [ \fIsig\fP \&.\&.\&. ] +\fIarg\fP is a series of commands (usually quoted to protect it from +immediate evaluation by the shell) to be read and executed when the shell +receives any of the signals specified by one or more \fIsig\fP args\&. +Each \fIsig\fP can be given as a number, +or as the name of a signal either with or without the string \fBSIG\fP +in front (e\&.g\&. 1, HUP, and SIGHUP are all the same signal)\&. +.RS +.PP +If \fIarg\fP is `\fB\-\fP\&', then the specified signals are reset to their +defaults, or, if no \fIsig\fP args are present, all traps are reset\&. +.PP +If \fIarg\fP is an empty string, then the specified signals +are ignored by the shell (and by the commands it invokes)\&. +.PP +If \fIarg\fP is omitted but one or more \fIsig\fP args are provided (i\&.e\&. +the first argument is a valid signal number or name), the effect is the +same as if \fIarg\fP had been specified as `\fB\-\fP\&'\&. +.PP +The \fBtrap\fP command with no arguments prints a list of commands +associated with each signal\&. +.PP +If \fIsig\fP is \fBZERR\fP then \fIarg\fP will be executed +after each command with a nonzero exit status\&. \fBERR\fP is an alias +for \fBZERR\fP on systems that have no \fBSIGERR\fP signal (this is the +usual case)\&. +.PP +If \fIsig\fP is \fBDEBUG\fP then \fIarg\fP will be executed +before each command if the option \fBDEBUG_BEFORE_CMD\fP is set +(as it is by default), else after each command\&. Here, a `command\&' is +what is described as a `sublist\&' in the shell grammar, see +the section SIMPLE COMMANDS & PIPELINES in \fIzshmisc\fP(1)\&. +If \fBDEBUG_BEFORE_CMD\fP is set various additional features are available\&. +First, it is possible to skip the next command by setting the option +\fBERR_EXIT\fP; see the description of the \fBERR_EXIT\fP option in +\fIzshoptions\fP(1)\&. Also, the shell parameter +\fBZSH_DEBUG_CMD\fP is set to the string corresponding to the command +to be executed following the trap\&. Note that this string is reconstructed +from the internal format and may not be formatted the same way as the +original text\&. The parameter is unset after the trap is executed\&. +.PP +If \fIsig\fP is \fB0\fP or \fBEXIT\fP +and the \fBtrap\fP statement is executed inside the body of a function, +then the command \fIarg\fP is executed after the function completes\&. +The value of \fB$?\fP at the start of execution is the exit status of the +shell or the return status of the function exiting\&. +If \fIsig\fP is \fB0\fP or \fBEXIT\fP +and the \fBtrap\fP statement is not executed inside the body of a function, +then the command \fIarg\fP is executed when the shell terminates; the +trap runs before any \fBzshexit\fP hook functions\&. +.PP +\fBZERR\fP, \fBDEBUG\fP, and \fBEXIT\fP traps are not executed inside other +traps\&. \fBZERR\fP and \fBDEBUG\fP traps are kept within subshells, while +other traps are reset\&. +.PP +Note that traps defined with the \fBtrap\fP builtin are slightly different +from those defined as `\fBTRAP\fP\fINAL\fP () { \&.\&.\&. }\&', as the latter have +their own function environment (line numbers, local variables, etc\&.) while +the former use the environment of the command in which they were called\&. +For example, +.PP +.RS +.nf +\fBtrap \&'print $LINENO' DEBUG\fP +.fi +.RE +.PP +will print the line number of a command executed after it has run, while +.PP +.RS +.nf +\fBTRAPDEBUG() { print $LINENO; }\fP +.fi +.RE +.PP +will always print the number zero\&. +.PP +Alternative signal names are allowed as described under \fBkill\fP above\&. +Defining a trap under either name causes any trap under an alternative +name to be removed\&. However, it is recommended that for consistency +users stick exclusively to one name or another\&. +.RE +.TP +\fBtrue\fP [ \fIarg\fP \&.\&.\&. ] +Do nothing and return an exit status of 0\&. +.TP +\fBttyctl\fP [ \fB\-fu\fP ] +The \fB\-f\fP option freezes the tty (i\&.e\&. terminal or terminal emulator), and +\fB\-u\fP unfreezes it\&. +When the tty is frozen, no changes made to the tty settings by +external programs will be honored by the shell, except for changes in the +size of the screen; the shell will +simply reset the settings to their previous values as soon as each +command exits or is suspended\&. Thus, \fBstty\fP and similar programs have +no effect when the tty is frozen\&. Freezing the tty does not cause +the current state to be remembered: instead, it causes future changes +to the state to be blocked\&. +.RS +.PP +Without options it reports whether the terminal is frozen or not\&. +.PP +Note that, regardless of whether the tty is frozen or not, the +shell needs to change the settings when the line editor starts, so +unfreezing the tty does not guarantee settings made on the +command line are preserved\&. Strings of commands run between +editing the command line will see a consistent tty state\&. +See also the shell variable \fBSTTY\fP for a means of initialising +the tty before running external commands\&. +.RE +.TP +\fBtype\fP [ \fB\-wfpamsS\fP ] \fIname\fP \&.\&.\&. +Equivalent to \fBwhence \-v\fP\&. + +.TP +.PD 0 +\fBtypeset \fP[ {\fB+\fP|\fB\-\fP}\fBAHUaghlmrtux\fP ] [ {\fB+\fP|\fB\-\fP}\fBEFLRZip\fP [ \fIn\fP ] ] +.TP +.PD 0 +\fB \fP[ \fB+\fP ] [ \fIname\fP[\fB=\fP\fIvalue\fP] \&.\&.\&. ] +.TP +.PD 0 +\fBtypeset \fP\fB\-T\fP [ {\fB+\fP|\fB\-\fP}\fBUglrux\fP ] [ {\fB+\fP|\fB\-\fP}\fBLRZp\fP [ \fIn\fP ] ] +.TP +.PD 0 +\fB \fP[ \fB+\fP | \fISCALAR\fP[\fB=\fP\fIvalue\fP] \fIarray\fP[\fB=(\fP\fIvalue\fP \&.\&.\&.\fB)\fP] [ \fIsep\fP ] ] +.TP +.PD +\fBtypeset\fP \fB\-f\fP [ {\fB+\fP|\fB\-\fP}\fBTUkmtuz\fP ] [ \fB+\fP ] [ \fIname\fP \&.\&.\&. ] +Set or display attributes and values for shell parameters\&. +.RS +.PP +Except as noted below for control flags that change the behavior, +a parameter is created for each \fIname\fP that does not already refer +to one\&. When inside a function, a new parameter is created for every +\fIname\fP (even those that already exist), and is unset again when the +function completes\&. See +`Local Parameters\&' in \fIzshparam\fP(1)\&. The same rules apply to special shell parameters, which +retain their special attributes when made local\&. +.PP +For each \fIname\fP\fB=\fP\fIvalue\fP assignment, the parameter +\fIname\fP is set to \fIvalue\fP\&. +.PP +If the shell option \fBTYPESET_SILENT\fP is not set, for each remaining +\fIname\fP that refers to a parameter that is already set, the name and +value of the parameter are printed in the form of an assignment\&. +Nothing is printed for newly\-created parameters, or when any attribute +flags listed below are given along with the \fIname\fP\&. Using +`\fB+\fP\&' instead of minus to introduce an attribute turns it off\&. +.PP +If no \fIname\fP is present, the names and values of all parameters are +printed\&. In this case the attribute flags restrict the display to only +those parameters that have the specified attributes, and using `\fB+\fP\&' +rather than `\fB\-\fP\&' to introduce the flag suppresses printing of the values +of parameters when there is no parameter name\&. +.PP +All forms of the command handle scalar assignment\&. Array assignment is +possible if any of the reserved words \fBdeclare\fP, \fBexport\fP, \fBfloat\fP, +\fBinteger\fP, \fBlocal\fP, \fBreadonly\fP or \fBtypeset\fP is matched when the +line is parsed (N\&.B\&. not when it is executed)\&. In this case the arguments +are parsed as assignments, except that the `\fB+=\fP\&' syntax and the +\fBGLOB_ASSIGN\fP option are not supported, and scalar values after \fB=\fP +are \fInot\fP split further into words, even if expanded (regardless of the +setting of the \fBKSH_TYPESET\fP option; this option is obsolete)\&. +.PP +Examples of the differences between command and reserved word parsing: +.PP +.RS +.nf +\fB# Reserved word parsing +typeset svar=$(echo one word) avar=(several words)\fP +.fi +.RE +.PP +The above creates a scalar parameter \fBsvar\fP and an array +parameter \fBavar\fP as if the assignments had been +.PP +.RS +.nf +\fBsvar="one word" +avar=(several words)\fP +.fi +.RE +.PP +On the other hand: +.PP +.RS +.nf +\fB# Normal builtin interface +builtin typeset svar=$(echo two words)\fP +.fi +.RE +.PP +The \fBbuiltin\fP keyword causes the above to use the standard builtin +interface to \fBtypeset\fP in which argument parsing is performed in the same +way as for other commands\&. This example creates a scalar \fBsvar\fP +containing the value \fBtwo\fP and another scalar parameter \fBwords\fP with +no value\&. An array value in this case would either cause an error or be +treated as an obscure set of glob qualifiers\&. +.PP +Arbitrary arguments are allowed if they take the form of assignments +after command line expansion; however, these only perform scalar +assignment: +.PP +.RS +.nf +\fBvar=\&'svar=val' +typeset $var\fP +.fi +.RE +.PP +The above sets the scalar parameter \fBsvar\fP to the value \fBval\fP\&. +Parentheses around the value within \fBvar\fP would not cause array +assignment as they will be treated as ordinary characters when \fB$var\fP +is substituted\&. Any non\-trivial expansion in the name part of the +assignment causes the argument to be treated in this fashion: +.PP +.RS +.nf +\fBtypeset {var1,var2,var3}=name\fP +.fi +.RE +.PP +The above syntax is valid, and has the expected effect of setting the +three parameters to the same value, but the command line is parsed as +a set of three normal command line arguments to \fBtypeset\fP after +expansion\&. Hence it is not possible to assign to multiple arrays by +this means\&. +.PP +Note that each interface to any of the commands my be disabled +separately\&. For example, `\fBdisable \-r typeset\fP\&' disables the reserved +word interface to \fBtypeset\fP, exposing the builtin interface, while +`\fBdisable typeset\fP\&' disables the builtin\&. Note that disabling the +reserved word interface for \fBtypeset\fP may cause problems with the +output of `\fBtypeset \-p\fP\&', which assumes the reserved word interface is +available in order to restore array and associative array values\&. +.PP +Unlike parameter assignment statements, \fBtypeset\fP\&'s exit status on an +assignment that involves a command substitution does not reflect the exit +status of the command substitution\&. Therefore, to test for an error in +a command substitution, separate the declaration of the parameter from its +initialization: +.PP +.RS +.nf +\fB# WRONG +typeset var1=$(exit 1) || echo "Trouble with var1" + +# RIGHT +typeset var1 && var1=$(exit 1) || echo "Trouble with var1" +\fP +.fi +.RE +.PP +To initialize a parameter \fIparam\fP to a command output and mark it readonly, +use \fBtypeset \-r \fP\fIparam\fP or \fBreadonly \fP\fIparam\fP after the parameter +assignment statement\&. +.PP +If no attribute flags are given, and either no \fIname\fP arguments are +present or the flag \fB+m\fP is used, then each parameter name printed is +preceded by a list of the attributes of that parameter (\fBarray\fP, +\fBassociation\fP, \fBexported\fP, \fBfloat\fP, \fBinteger\fP, \fBreadonly\fP, +or \fBundefined\fP for autoloaded parameters not yet loaded)\&. If \fB+m\fP is +used with attribute flags, and all those flags are introduced with +\fB+\fP, the matching parameter names are printed but their values +are not\&. +.PP +The following control flags change the behavior of \fBtypeset\fP: +.PP +.PD 0 +.TP +.PD +\fB+\fP +If `\fB+\fP\&' appears by itself in a separate word as the last option, +then the names of all parameters (functions with \fB\-f\fP) are printed, but +the values (function bodies) are not\&. No \fIname\fP arguments may appear, +and it is an error for any other options to follow `\fB+\fP\&'\&. The +effect of `\fB+\fP\&' is as if all attribute flags which precede it were +given with a `\fB+\fP\&' prefix\&. For example, `\fBtypeset \-U +\fP' is +equivalent to `\fBtypeset +U\fP\&' and displays the names of all arrays having +the uniqueness attribute, whereas `\fBtypeset \-f \-U +\fP\&' displays the +names of all autoloadable functions\&. If \fB+\fP is the only option, +then type information (array, readonly, etc\&.) is also printed for each +parameter, in the same manner as `\fBtypeset +m "*"\fP\&'\&. +.TP +\fB\-g\fP +The \fB\-g\fP (global) means that any resulting parameter will not be +restricted to local scope\&. Note that this does not necessarily mean that +the parameter will be global, as the flag will apply to any existing +parameter (even if unset) from an enclosing function\&. This flag does not +affect the parameter after creation, hence it has no effect when listing +existing parameters, nor does the flag \fB+g\fP have any effect except in +combination with \fB\-m\fP (see below)\&. +.TP +\fB\-m\fP +If the \fB\-m\fP flag is given the \fIname\fP arguments are taken as patterns +(use quoting to prevent these from being interpreted as file patterns)\&. +With no attribute flags, all parameters (or functions with the \fB\-f\fP +flag) with matching names are printed (the shell option \fBTYPESET_SILENT\fP +is not used in this case)\&. +.RS +.PP +If the \fB+g\fP flag is combined with \fB\-m\fP, a new local parameter is +created for every matching parameter that is not already local\&. Otherwise +\fB\-m\fP applies all other flags or assignments to the existing parameters\&. +.PP +Except when assignments are made with \fIname\fP\fB=\fP\fIvalue\fP, using +\fB+m\fP forces the matching parameters and their attributes to be printed, +even inside a function\&. Note that \fB\-m\fP is ignored if no patterns are +given, so `\fBtypeset \-m\fP\&' displays attributes but `\fBtypeset \-a +m\fP' +does not\&. +.RE +.TP +\fB\-p\fP [ \fIn\fP ] +If the \fB\-p\fP option is given, parameters and values are printed in the +form of a typeset command with an assignment, regardless of other flags +and options\&. Note that the \fB\-H\fP flag on parameters is respected; no +value will be shown for these parameters\&. +.RS +.PP +\fB\-p\fP may be followed by an optional integer argument\&. Currently +only the value \fB1\fP is supported\&. In this case arrays and associative +arrays are printed with newlines between indented elements for +readability\&. +.RE +.TP +\fB\-T\fP [ \fIscalar\fP[\fB=\fP\fIvalue\fP] \fIarray\fP[\fB=(\fP\fIvalue\fP \&.\&.\&.\fB)\fP] [ \fIsep\fP ] ] +This flag has a different meaning when used with \fB\-f\fP; see below\&. +Otherwise the \fB\-T\fP option requires zero, two, or three arguments to be +present\&. With no arguments, the list of parameters created in this +fashion is shown\&. With two or three arguments, the first two are the name +of a scalar and of an array parameter (in that order) that will be tied +together in the manner of \fB$PATH\fP and \fB$path\fP\&. The optional third +argument is a single\-character separator which will be used to join the +elements of the array to form the scalar; if absent, a colon is used, as +with \fB$PATH\fP\&. Only the first character of the separator is significant; +any remaining characters are ignored\&. Multibyte characters are not +yet supported\&. +.RS +.PP +Only one of the scalar and array parameters may be assigned an initial +value (the restrictions on assignment forms described above also apply)\&. +.PP +Both the scalar and the array may be manipulated as normal\&. If one is +unset, the other will automatically be unset too\&. There is no way of +untying the variables without unsetting them, nor of converting the type +of one of them with another \fBtypeset\fP command; \fB+T\fP does not work, +assigning an array to \fIscalar\fP is an error, and assigning a scalar to +\fIarray\fP sets it to be a single\-element array\&. +.PP +Note that both `\fBtypeset \-xT \&.\&.\&.\fP\&' and `\fBexport \-T \&.\&.\&.\fP' work, but +only the scalar will be marked for export\&. Setting the value using the +scalar version causes a split on all separators (which cannot be quoted)\&. +It is possible to apply \fB\-T\fP to two previously tied variables but with a +different separator character, in which case the variables remain joined +as before but the separator is changed\&. +.PP +When an existing scalar is tied to a new array, the value of the scalar +is preserved but no attribute other than export will be preserved\&. +.RE +.PP +Attribute flags that transform the final value (\fB\-L\fP, \fB\-R\fP, \fB\-Z\fP, +\fB\-l\fP, \fB\-u\fP) are only applied to the expanded value at the point +of a parameter expansion expression using `\fB$\fP\&'\&. They are not applied +when a parameter is retrieved internally by the shell for any purpose\&. +.PP +The following attribute flags may be specified: +.PP +.PD 0 +.TP +.PD +\fB\-A\fP +The names refer to associative array parameters; see +`Array Parameters\&' in \fIzshparam\fP(1)\&. +.TP +\fB\-L\fP [ \fIn\fP ] +Left justify and remove leading blanks from the value when the parameter +is expanded\&. +If \fIn\fP is nonzero, it defines the width of the field\&. +If \fIn\fP is zero, the width is determined by the width of the value of +the first assignment\&. In the case of numeric parameters, the length of the +complete value assigned to the parameter is used to determine the width, +not the value that would be output\&. +.RS +.PP +The width is the count of characters, which may be multibyte characters +if the \fBMULTIBYTE\fP option is in effect\&. Note that the screen +width of the character is not taken into account; if this is required, +use padding with parameter expansion flags +\fB${(ml\fP\fI\&.\&.\&.\fP\fB)\fP\fI\&.\&.\&.\fP\fB}\fP as described in +`Parameter Expansion Flags\&' in +\fIzshexpn\fP(1)\&. +.PP +When the parameter is expanded, it is filled on the right with +blanks or truncated if necessary to fit the field\&. +Note truncation can lead to unexpected results with numeric parameters\&. +Leading zeros are removed if the \fB\-Z\fP flag is also set\&. +.RE +.TP +\fB\-R\fP [ \fIn\fP ] +Similar to \fB\-L\fP, except that right justification is used; +when the parameter is expanded, the field is left filled with +blanks or truncated from the end\&. May not be combined with the \fB\-Z\fP +flag\&. +.TP +\fB\-U\fP +For arrays (but not for associative arrays), keep only the first +occurrence of each duplicated value\&. This may also be set for tied +parameters (see \fB\-T\fP) or colon\-separated special parameters like +\fBPATH\fP or \fBFIGNORE\fP, etc\&. Note the flag takes effect on assignment, +and the type of the variable being assigned to is determinative; for +variables with shared values it is therefore recommended to set the flag +for all interfaces, e\&.g\&. `\fBtypeset \-U PATH path\fP\&'\&. +.RS +.PP +This flag has a different meaning when used with \fB\-f\fP; see below\&. +.RE +.TP +\fB\-Z\fP [ \fIn\fP ] +Specially handled if set along with the \fB\-L\fP flag\&. +Otherwise, similar to \fB\-R\fP, except that leading zeros are used for +padding instead of blanks if the first non\-blank character is a digit\&. +Numeric parameters are specially handled: they are always eligible +for padding with zeroes, and the zeroes are inserted at an appropriate +place in the output\&. +.TP +\fB\-a\fP +The names refer to array parameters\&. An array parameter may be +created this way, but it may be assigned to in the \fBtypeset\fP +statement only if the reserved word form of \fBtypeset\fP is enabled +(as it is by default)\&. When displaying, both normal and associative +arrays are shown\&. +.TP +\fB\-f\fP +The names refer to functions rather than parameters\&. No assignments +can be made, and the only other valid flags are \fB\-t\fP, \fB\-T\fP, \fB\-k\fP, +\fB\-u\fP, \fB\-U\fP and \fB\-z\fP\&. The flag \fB\-t\fP turns on execution tracing +for this function; the flag \fB\-T\fP does the same, but turns off tracing +for any named (not anonymous) function called from the present one, +unless that function also +has the \fB\-t\fP or \fB\-T\fP flag\&. The \fB\-u\fP and \fB\-U\fP flags cause the +function to be marked for autoloading; \fB\-U\fP also causes alias +expansion to be suppressed when the function is loaded\&. See the +description of the `\fBautoload\fP\&' builtin for details\&. +.RS +.PP +Note that the builtin \fBfunctions\fP provides the same basic capabilities +as \fBtypeset \-f\fP but gives access to a few extra options; \fBautoload\fP +gives further additional options for the case \fBtypeset \-fu\fP and +\fBtypeset \-fU\fP\&. +.RE +.TP +\fB\-h\fP +Hide: only useful for special parameters (those marked `<S>\&' in the table in +\fIzshparam\fP(1)), and for local parameters with the same name as a special parameter, +though harmless for others\&. A special parameter with this attribute will +not retain its special effect when made local\&. Thus after `\fBtypeset \-h +PATH\fP\&', a function containing `\fBtypeset PATH\fP' will create an ordinary +local parameter without the usual behaviour of \fBPATH\fP\&. Alternatively, +the local parameter may itself be given this attribute; hence inside a +function `\fBtypeset \-h PATH\fP\&' creates an ordinary local parameter and the +special \fBPATH\fP parameter is not altered in any way\&. It is also possible +to create a local parameter using `\fBtypeset +h \fP\fIspecial\fP\&', where the +local copy of \fIspecial\fP will retain its special properties regardless of +having the \fB\-h\fP attribute\&. Global special parameters loaded from shell +modules (currently those in \fBzsh/mapfile\fP and \fBzsh/parameter\fP) are +automatically given the \fB\-h\fP attribute to avoid name clashes\&. +.TP +\fB\-H\fP +Hide value: specifies that \fBtypeset\fP will not display the value of the +parameter when listing parameters; the display for such parameters is +always as if the `\fB+\fP\&' flag had been given\&. Use of the parameter is +in other respects normal, and the option does not apply if the parameter is +specified by name, or by pattern with the \fB\-m\fP option\&. This is on by +default for the parameters in the \fBzsh/parameter\fP and \fBzsh/mapfile\fP +modules\&. Note, however, that unlike the \fB\-h\fP flag this is also useful +for non\-special parameters\&. +.TP +\fB\-i\fP [ \fIn\fP ] +Use an internal integer representation\&. If \fIn\fP is nonzero it +defines the output arithmetic base, otherwise it is determined by the +first assignment\&. Bases from 2 to 36 inclusive are allowed\&. +.TP +\fB\-E\fP [ \fIn\fP ] +Use an internal double\-precision floating point representation\&. On output +the variable will be converted to scientific notation\&. If \fIn\fP is +nonzero it defines the number of significant figures to display; the +default is ten\&. +.TP +\fB\-F\fP [ \fIn\fP ] +Use an internal double\-precision floating point representation\&. On output +the variable will be converted to fixed\-point decimal notation\&. If \fIn\fP +is nonzero it defines the number of digits to display after the decimal +point; the default is ten\&. +.TP +\fB\-l\fP +Convert the result to lower case whenever the parameter is expanded\&. +The value is \fInot\fP converted when assigned\&. +.TP +\fB\-r\fP +The given \fIname\fPs are marked readonly\&. Note that if \fIname\fP is a +special parameter, the readonly attribute can be turned on, but cannot then +be turned off\&. +.RS +.PP +If the \fBPOSIX_BUILTINS\fP option is set, the readonly attribute is +more restrictive: unset variables can be marked readonly and cannot then +be set; furthermore, the readonly attribute cannot be removed from any +variable\&. +.PP +It is still possible to change other attributes of the variable though, +some of which like \fB\-U\fP or \fB\-Z\fP would affect the value\&. More generally, +the readonly attribute should not be relied on as a security mechanism\&. +.PP +Note that in zsh (like in pdksh but unlike most other shells) it is +still possible to create a local variable of the same name as this is +considered a different variable (though this variable, too, can be marked +readonly)\&. Special variables that have been made readonly retain their value +and readonly attribute when made local\&. +.RE +.TP +\fB\-t\fP +Tags the named parameters\&. Tags have no special meaning to the shell\&. +This flag has a different meaning when used with \fB\-f\fP; see above\&. +.TP +\fB\-u\fP +Convert the result to upper case whenever the parameter is expanded\&. +The value is \fInot\fP converted when assigned\&. +This flag has a different meaning when used with \fB\-f\fP; see above\&. +.TP +\fB\-x\fP +Mark for automatic export to the environment of subsequently +executed commands\&. If the option \fBGLOBAL_EXPORT\fP is set, this implies +the option \fB\-g\fP, unless \fB+g\fP is also explicitly given; in other words +the parameter is not made local to the enclosing function\&. This is for +compatibility with previous versions of zsh\&. +.RE +.TP +\fBulimit\fP [ \fB\-HSa\fP ] [ { \fB\-bcdfiklmnpqrsTtvwx\fP | \fB\-N\fP \fIresource\fP } [ \fIlimit\fP ] \&.\&.\&. ] +Set or display resource limits of the shell and the processes started by +the shell\&. The value of \fIlimit\fP can be a number in the unit specified +below or one of the values `\fBunlimited\fP\&', which removes the limit on the +resource, or `\fBhard\fP\&', which uses the current value of the hard limit on +the resource\&. +.RS +.PP +By default, only soft limits are manipulated\&. If the \fB\-H\fP flag +is given use hard limits instead of soft limits\&. If the \fB\-S\fP flag is given +together with the \fB\-H\fP flag set both hard and soft limits\&. +.PP +If no options are used, the file size limit (\fB\-f\fP) is assumed\&. +.PP +If \fIlimit\fP is omitted the current value of the specified resources are +printed\&. When more than one resource value is printed, the limit name and +unit is printed before each value\&. +.PP +When looping over multiple resources, the shell will abort immediately if +it detects a badly formed argument\&. However, if it fails to set a limit +for some other reason it will continue trying to set the remaining limits\&. +.PP +Not all the following resources are supported on all systems\&. Running +\fBulimit \-a\fP will show which are supported\&. +.PP +.PD 0 +.TP +\fB\-a\fP +Lists all of the current resource limits\&. +.TP +\fB\-b\fP +Socket buffer size in bytes (N\&.B\&. not kilobytes) +.TP +\fB\-c\fP +512\-byte blocks on the size of core dumps\&. +.TP +\fB\-d\fP +Kilobytes on the size of the data segment\&. +.TP +\fB\-f\fP +512\-byte blocks on the size of files written\&. +.TP +\fB\-i\fP +The number of pending signals\&. +.TP +\fB\-k\fP +The number of kqueues allocated\&. +.TP +\fB\-l\fP +Kilobytes on the size of locked\-in memory\&. +.TP +\fB\-m\fP +Kilobytes on the size of physical memory\&. +.TP +\fB\-n\fP +open file descriptors\&. +.TP +\fB\-p\fP +The number of pseudo\-terminals\&. +.TP +\fB\-q\fP +Bytes in POSIX message queues\&. +.TP +\fB\-r\fP +Maximum real time priority\&. On some systems where this +is not available, such as NetBSD, this has the same effect as \fB\-T\fP +for compatibility with \fBsh\fP\&. +.TP +\fB\-s\fP +Kilobytes on the size of the stack\&. +.TP +\fB\-T\fP +The number of simultaneous threads available to the user\&. +.TP +\fB\-t\fP +CPU seconds to be used\&. +.TP +\fB\-u\fP +The number of processes available to the user\&. +.TP +\fB\-v\fP +Kilobytes on the size of virtual memory\&. On some systems this +refers to the limit called `address space\&'\&. +.TP +\fB\-w\fP +Kilobytes on the size of swapped out memory\&. +.TP +\fB\-x\fP +The number of locks on files\&. +.PD +.PP +A resource may also be specified by integer in the form `\fB\-N\fP +\fIresource\fP\&', where \fIresource\fP corresponds to the integer defined for +the resource by the operating system\&. This may be used to set the limits +for resources known to the shell which do not correspond to option letters\&. +Such limits will be shown by number in the output of `\fBulimit \-a\fP\&'\&. +.PP +The number may alternatively be out of the range of limits compiled into +the shell\&. The shell will try to read or write the limit anyway, and +will report an error if this fails\&. +.RE +.TP +\fBumask\fP [ \fB\-S\fP ] [ \fImask\fP ] +The umask is set to \fImask\fP\&. \fImask\fP can be either +an octal number or a symbolic value as described in \fIchmod\fP(1)\&. +If \fImask\fP is omitted, the current value is printed\&. The \fB\-S\fP +option causes the mask to be printed as a symbolic value\&. Otherwise, +the mask is printed as an octal number\&. Note that in +the symbolic form the permissions you specify are those which are to be +allowed (not denied) to the users specified\&. +.TP +\fBunalias\fP [ \fB\-ams\fP ] \fIname\fP \&.\&.\&. +Removes aliases\&. This command works the same as \fBunhash \-a\fP, except that +the \fB\-a\fP option removes all regular or global aliases, or with \fB\-s\fP +all suffix aliases: in this case no \fIname\fP arguments may appear\&. The +options \fB\-m\fP (remove by pattern) and \fB\-s\fP without \fB\-a\fP (remove +listed suffix aliases) behave as for \fBunhash \-a\fP\&. Note that +the meaning of \fB\-a\fP is different between \fBunalias\fP and \fBunhash\fP\&. +.TP +\fBunfunction\fP +Same as \fBunhash \-f\fP\&. +.TP +\fBunhash\fP [ \fB\-adfms\fP ] \fIname\fP \&.\&.\&. +Remove the element named \fIname\fP from an internal hash table\&. The +default is remove elements from the command hash table\&. The \fB\-a\fP +option causes \fBunhash\fP to remove regular or global aliases; note +when removing a global aliases that the argument must be quoted to prevent +it from being expanded before being passed to the command\&. +The \fB\-s\fP option causes \fBunhash\fP to remove suffix aliases\&. +The \fB\-f\fP option causes +\fBunhash\fP to remove shell functions\&. The \fB\-d\fP options causes +\fBunhash\fP to remove named directories\&. If the \fB\-m\fP flag is given +the arguments are taken as patterns (should be quoted) and all elements +of the corresponding hash table with matching names will be removed\&. +.TP +\fBunlimit\fP [ \fB\-hs\fP ] \fIresource\fP \&.\&.\&. +The resource limit for each \fIresource\fP is set to the hard limit\&. +If the \fB\-h\fP flag is given and the shell has appropriate privileges, +the hard resource limit for each \fIresource\fP is removed\&. +The resources of the shell process are only changed if the \fB\-s\fP +flag is given\&. +.RS +.PP +The \fBunlimit\fP command is not made available by default when the +shell starts in a mode emulating another shell\&. It can be made available +with the command `\fBzmodload \-F zsh/rlimits b:unlimit\fP\&'\&. +.RE +.TP +\fBunset\fP [ \fB\-fmv\fP ] \fIname\fP \&.\&.\&. +Each named parameter is unset\&. +Local parameters remain local even if unset; they appear unset within scope, +but the previous value will still reappear when the scope ends\&. +.RS +.PP +Individual elements of associative array parameters may be unset by using +subscript syntax on \fIname\fP, which should be quoted (or the entire command +prefixed with \fBnoglob\fP) to protect the subscript from filename generation\&. +.PP +If the \fB\-m\fP flag is specified the arguments are taken as patterns (should +be quoted) and all parameters with matching names are unset\&. Note that this +cannot be used when unsetting associative array elements, as the subscript +will be treated as part of the pattern\&. +.PP +The \fB\-v\fP flag specifies that \fIname\fP refers to parameters\&. This is the +default behaviour\&. +.PP +\fBunset \-f\fP is equivalent to \fBunfunction\fP\&. +.RE +.TP +\fBunsetopt\fP [ {\fB+\fP|\fB\-\fP}\fIoptions\fP | {\fB+\fP|\fB\-\fP}\fBo\fP \fIoption_name\fP ] [ \fIname\fP \&.\&.\&. ] +Unset the options for the shell\&. All options specified either +with flags or by name are unset\&. If no arguments are supplied, +the names of all options currently unset are printed\&. +If the \fB\-m\fP flag is given the arguments are taken as patterns +(which should be quoted to preserve them from being interpreted as glob +patterns), and all options with names matching these patterns are unset\&. +.TP +\fBvared\fP +See the section `Zle Builtins\&' in \fIzshzle\fP(1)\&. +.TP +\fBwait\fP [ \fIjob\fP \&.\&.\&. ] +Wait for the specified jobs or processes\&. If \fIjob\fP is not given +then all currently active child processes are waited for\&. +Each \fIjob\fP can be either a job specification or the process ID +of a job in the job table\&. +The exit status from this command is that of the job waited for\&. +If \fIjob\fP represents an unknown job or process ID, a warning is printed +(unless the \fBPOSIX_BUILTINS\fP option is set) and the exit status is 127\&. +.RS +.PP +It is possible to wait for recent processes (specified by process ID, +not by job) that were running in the background even if the process has +exited\&. Typically the process ID will be recorded by capturing the +value of the variable \fB$!\fP immediately after the process has been +started\&. There is a limit on the number of process IDs remembered by +the shell; this is given by the value of the system configuration +parameter \fBCHILD_MAX\fP\&. When this limit is reached, older process IDs +are discarded, least recently started processes first\&. +.PP +Note there is no protection against the process ID wrapping, i\&.e\&. if the +wait is not executed soon enough there is a chance the process waited +for is the wrong one\&. A conflict implies both process IDs have been +generated by the shell, as other processes are not recorded, and that +the user is potentially interested in both, so this problem is intrinsic +to process IDs\&. +.RE +.TP +\fBwhence\fP [ \fB\-vcwfpamsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. +For each \fIname\fP, indicate how it would be interpreted if used as a +command name\&. +.RS +.PP +If \fIname\fP is not an alias, built\-in command, external command, shell +function, hashed command, or a reserved word, the exit status shall be +non\-zero, and \-\- if \fB\-v\fP, \fB\-c\fP, or \fB\-w\fP was passed \-\- a message +will be written to standard output\&. (This is different from other shells that +write that message to standard error\&.) +.PP +\fBwhence\fP is most useful when \fIname\fP is only the last path component +of a command, i\&.e\&. does not include a `\fB/\fP\&'; in particular, pattern +matching only succeeds if just the non\-directory component of the command is +passed\&. +.PP +.PD 0 +.TP +.PD +\fB\-v\fP +Produce a more verbose report\&. +.TP +\fB\-c\fP +Print the results in a \fBcsh\fP\-like format\&. +This takes precedence over \fB\-v\fP\&. +.TP +\fB\-w\fP +For each \fIname\fP, print `\fIname\fP\fB:\fP \fIword\fP\&' where \fIword\fP +is one of \fBalias\fP, \fBbuiltin\fP, \fBcommand\fP, \fBfunction\fP, +\fBhashed\fP, \fBreserved\fP or \fBnone\fP, according as \fIname\fP +corresponds to an alias, a built\-in command, an external command, a +shell function, a command defined with the \fBhash\fP builtin, a +reserved word, or is not recognised\&. This takes precedence over +\fB\-v\fP and \fB\-c\fP\&. +.TP +\fB\-f\fP +Causes the contents of a shell function to be +displayed, which would otherwise not happen unless the \fB\-c\fP +flag were used\&. +.TP +\fB\-p\fP +Do a path search for \fIname\fP +even if it is an alias, reserved word, shell function or builtin\&. +.TP +\fB\-a\fP +Do a search for all occurrences of \fIname\fP +throughout the command path\&. +Normally only the first occurrence is printed\&. +.TP +\fB\-m\fP +The arguments are taken as patterns (pattern characters should be +quoted), and the information is displayed for each command matching one +of these patterns\&. +.TP +\fB\-s\fP +If a pathname contains symlinks, print the symlink\-free pathname as well\&. +.TP +\fB\-S\fP +As \fB\-s\fP, but if the pathname had to be resolved by following +multiple symlinks, the intermediate steps are printed, too\&. The +symlink resolved at each step might be anywhere in the path\&. +.TP +\fB\-x\fP \fInum\fP +Expand tabs when outputting shell functions using the \fB\-c\fP option\&. +This has the same effect as the \fB\-x\fP option to the \fBfunctions\fP +builtin\&. +.RE +.TP +\fBwhere\fP [ \fB\-wpmsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. +Equivalent to \fBwhence \-ca\fP\&. +.TP +\fBwhich\fP [ \fB\-wpamsS\fP ] [ \fB\-x\fP \fInum\fP ] \fIname\fP \&.\&.\&. +Equivalent to \fBwhence \-c\fP\&. +.TP +.PD 0 +\fBzcompile\fP [ \fB\-U\fP ] [ \fB\-z\fP | \fB\-k\fP ] [ \fB\-R\fP | \fB\-M\fP ] \fIfile\fP [ \fIname\fP \&.\&.\&. ] +.TP +.PD 0 +\fBzcompile\fP \fB\-ca\fP [ \fB\-m\fP ] [ \fB\-R\fP | \fB\-M\fP ] \fIfile\fP [ \fIname\fP \&.\&.\&. ] +.TP +.PD +\fBzcompile \-t\fP \fIfile\fP [ \fIname\fP \&.\&.\&. ] +This builtin command can be used to compile functions or scripts, +storing the compiled form in a file, and to examine files containing +the compiled form\&. This allows faster autoloading of functions and +sourcing of scripts by avoiding parsing of the text when the files +are read\&. +.RS +.PP +The first form (without the \fB\-c\fP, \fB\-a\fP or \fB\-t\fP options) creates a +compiled file\&. If only the \fIfile\fP argument is given, the +output file has the name `\fIfile\fP\fB\&.zwc\fP\&' and will be placed in +the same directory as the \fIfile\fP\&. The shell will load the compiled +file instead of the normal function file when the function +is autoloaded; see +the section `Autoloading Functions\&' in \fIzshmisc\fP(1) +for a description of how autoloaded functions are searched\&. The +extension \fB\&.zwc\fP stands for `zsh word code\&'\&. +.PP +If there is at least one \fIname\fP argument, all the named files +are compiled into the output \fIfile\fP given as the first argument\&. If +\fIfile\fP does not end in \fB\&.zwc\fP, this extension is automatically +appended\&. Files containing multiple compiled functions are called `digest\&' +files, and are intended to be used as elements of the \fBFPATH\fP/\fBfpath\fP +special array\&. +.PP +The second form, with the \fB\-c\fP or \fB\-a\fP options, writes the compiled +definitions for all the named functions into \fIfile\fP\&. For \fB\-c\fP, the +names must be functions currently defined in the shell, not those marked +for autoloading\&. Undefined functions that are marked for autoloading +may be written by using the \fB\-a\fP option, in which case the \fBfpath\fP +is searched and the contents of the definition files for those +functions, if found, are compiled into \fIfile\fP\&. If both \fB\-c\fP and +\fB\-a\fP are given, names of both defined functions and functions marked +for autoloading may be given\&. In either case, the functions in files +written with the \fB\-c\fP or \fB\-a\fP option will be autoloaded as if the +\fBKSH_AUTOLOAD\fP option were unset\&. +.PP +The reason for handling loaded and not\-yet\-loaded functions with +different options is that some definition files for autoloading define +multiple functions, including the function with the same name as the +file, and, at the end, call that function\&. In such cases the output of +`\fBzcompile \-c\fP\&' does not include the additional functions defined in +the file, and any other initialization code in the file is lost\&. Using +`\fBzcompile \-a\fP\&' captures all this extra information\&. +.PP +If the \fB\-m\fP option is combined with \fB\-c\fP or \fB\-a\fP, +the \fIname\fPs are used as patterns and all functions whose names +match one of these patterns will be written\&. If no \fIname\fP is given, +the definitions of all functions currently defined or marked as +autoloaded will be written\&. +.PP +Note the second form cannot be used for compiling functions that +include redirections as part of the definition rather than within +the body of the function; for example +.PP +.RS +.nf +\fBfn1() { { \&.\&.\&. } >~/logfile }\fP +.fi +.RE +.PP +can be compiled but +.PP +.RS +.nf +\fBfn1() { \&.\&.\&. } >~/logfile\fP +.fi +.RE +.PP +cannot\&. It is possible to use the first form of \fBzcompile\fP to compile +autoloadable functions that include the full function definition instead +of just the body of the function\&. +.PP +The third form, with the \fB\-t\fP option, examines an existing +compiled file\&. Without further arguments, the names of the original +files compiled into it are listed\&. The first line of output shows +the version of the shell which compiled the file and how the file +will be used (i\&.e\&. by reading it directly or by mapping it into memory)\&. +With arguments, nothing is output and the return status is set to zero if +definitions for \fIall\fP \fIname\fPs were found in the compiled +file, and non\-zero if the definition for at least one \fIname\fP was not +found\&. +.PP +Other options: +.PP +.PD 0 +.TP +.PD +\fB\-U\fP +Aliases are not expanded when compiling the \fIname\fPd files\&. +.TP +\fB\-R\fP +When the compiled file is read, its contents are copied into the +shell\&'s memory, rather than memory\-mapped (see \fB\-M\fP)\&. This +happens automatically on systems that do not support memory mapping\&. +.RS +.PP +When compiling scripts instead of autoloadable functions, it is +often desirable to use this option; otherwise the whole file, including the +code to define functions which have already been defined, will +remain mapped, consequently wasting memory\&. +.RE +.TP +\fB\-M\fP +The compiled file is mapped into the shell\&'s memory when read\&. This +is done in such a way that multiple instances of the shell running +on the same host will share this mapped file\&. If neither \fB\-R\fP nor +\fB\-M\fP is given, the \fBzcompile\fP builtin decides what to do based +on the size of the compiled file\&. +.TP +.PD 0 +\fB\-k\fP +.TP +.PD +\fB\-z\fP +These options are used when the compiled file contains functions which +are to be autoloaded\&. If \fB\-z\fP is given, the +function will be autoloaded as if the \fBKSH_AUTOLOAD\fP option is +\fInot\fP set, even if it is set at the time the compiled file is +read, while if the \fB\-k\fP is given, the function will be loaded as if +\fBKSH_AUTOLOAD\fP \fIis\fP set\&. These options also take precedence over +any \fB\-k\fP or \fB\-z\fP options specified to the \fBautoload\fP builtin\&. If +neither of these options is given, the function will be loaded as +determined by the setting of the \fBKSH_AUTOLOAD\fP option at the time +the compiled file is read\&. + +These options may also appear as many times as necessary between the listed +\fIname\fPs to specify the loading style of all following functions, up to +the next \fB\-k\fP or \fB\-z\fP\&. + +The created file always contains two versions of the compiled +format, one for big\-endian machines and one for small\-endian +machines\&. The upshot of this is that the compiled file is machine +independent and if it is read or mapped, only one half of the file +is actually used (and mapped)\&. +.RE +.TP +\fBzformat\fP +See the section `The zsh/zutil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzftp\fP +See the section `The zsh/zftp Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzle\fP +See the section `Zle Builtins\&' in \fIzshzle\fP(1)\&. +.TP +.PD 0 +\fBzmodload\fP [ \fB\-dL\fP ] [ \fB\-s\fP ] [ \&.\&.\&. ] +.TP +.PD 0 +\fBzmodload \-F\fP [ \fB\-alLme\fP \fB\-P\fP \fIparam\fP ] \fImodule\fP [ [\fB+\-\fP]\fIfeature\fP \&.\&.\&. ] +.TP +.PD 0 +\fBzmodload \-e\fP [ \fB\-A\fP ] [ \&.\&.\&. ] +.TP +.PD 0 +\fBzmodload\fP [ \fB\-a\fP [ \fB\-bcpf\fP [ \fB\-I\fP ] ] ] [ \fB\-iL\fP ] \&.\&.\&. +.TP +.PD 0 +\fBzmodload\fP \fB\-u\fP [ \fB\-abcdpf\fP [ \fB\-I\fP ] ] [ \fB\-iL\fP ] \&.\&.\&. +.TP +.PD 0 +\fBzmodload\fP \fB\-A\fP [ \fB\-L\fP ] [ \fImodalias\fP[\fB=\fP\fImodule\fP] \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-R\fP \fImodalias\fP \&.\&.\&. +Performs operations relating to zsh\&'s loadable modules\&. +Loading of modules while the shell is running (`dynamical loading\&') is not +available on all operating systems, or on all installations on a particular +operating system, although the \fBzmodload\fP command itself is always +available and can be used to manipulate modules built into versions of the +shell executable without dynamical loading\&. +.RS +.PP +Without arguments the names of all currently loaded binary modules are +printed\&. The \fB\-L\fP option causes this list to be in the form of a +series of \fBzmodload\fP commands\&. Forms with arguments are: +.PP +.PD 0 +.TP +.PD 0 +\fBzmodload\fP [ \fB\-is\fP ] \fIname\fP \&.\&.\&. +.TP +.PD +\fBzmodload\fP \fB\-u\fP [ \fB\-i\fP ] \fIname\fP \&.\&.\&. +In the simplest case, \fBzmodload\fP loads a binary module\&. The module must +be in a file with a name consisting of the specified \fIname\fP followed by +a standard suffix, usually `\fB\&.so\fP\&' (`\fB\&.sl\fP' on HPUX)\&. +If the module to be loaded is already loaded the duplicate module is +ignored\&. If \fBzmodload\fP detects an inconsistency, such as an +invalid module name or circular dependency list, the current code block is +aborted\&. If it is available, the module is loaded if necessary, while if it +is not available, non\-zero status is silently returned\&. The option +\fB\-i\fP is accepted for compatibility but has no effect\&. +.RS +.PP +The \fIname\fPd module is searched for in the same way a command is, using +\fB$module_path\fP instead of \fB$path\fP\&. However, the path search is +performed even when the module name contains a `\fB/\fP\&', which it usually does\&. +There is no way to prevent the path search\&. +.PP +If the module supports features (see below), \fBzmodload\fP tries to +enable all features when loading a module\&. If the module was successfully +loaded but not all features could be enabled, \fBzmodload\fP returns status 2\&. +.PP +If the option \fB\-s\fP is given, no error is printed if the module was not +available (though other errors indicating a problem with the module are +printed)\&. The return status indicates if the module was loaded\&. This +is appropriate if the caller considers the module optional\&. +.PP +With \fB\-u\fP, \fBzmodload\fP unloads modules\&. The same \fIname\fP +must be given that was given when the module was loaded, but it is not +necessary for the module to exist in the file system\&. +The \fB\-i\fP option suppresses the error if the module is already +unloaded (or was never loaded)\&. +.PP +Each module has a boot and a cleanup function\&. The module +will not be loaded if its boot function fails\&. Similarly a module +can only be unloaded if its cleanup function runs successfully\&. +.RE +.TP +\fBzmodload \-F\fP [ \fB\-almLe\fP \fB\-P\fP \fIparam\fP ] \fImodule\fP [ [\fB+\-\fP]\fIfeature\fP \&.\&.\&. ] +\fBzmodload \-F\fP allows more selective control over the features provided +by modules\&. With no options apart from \fB\-F\fP, the module named +\fImodule\fP is loaded, if it was not already loaded, and the list of +\fIfeature\fPs is set to the required state\&. If no +\fIfeature\fPs are specified, the module is loaded, if it was not already +loaded, but the state of features is unchanged\&. Each feature +may be preceded by a \fB+\fP to turn the feature on, or \fB\-\fP to turn it +off; the \fB+\fP is assumed if neither character is present\&. +Any feature not explicitly mentioned is left in its current state; +if the module was not previously loaded this means any such features will +remain disabled\&. The return status is zero if all features were +set, 1 if the module failed to load, and 2 if some features could +not be set (for example, a parameter couldn\&'t be added because there +was a different parameter of the same name) but the module was loaded\&. +.RS +.PP +The standard features are builtins, conditions, parameters and math +functions; these are indicated by the prefix `\fBb:\fP\&', `\fBc:\fP' +(`\fBC:\fP\&' for an infix condition), `\fBp:\fP' and `\fBf:\fP', respectively, +followed by the name that the corresponding feature would have in the +shell\&. For example, `\fBb:strftime\fP\&' indicates a builtin named +\fBstrftime\fP and \fBp:EPOCHSECONDS\fP indicates a parameter named +\fBEPOCHSECONDS\fP\&. The module may provide other (`abstract\&') features of +its own as indicated by its documentation; these have no prefix\&. +.PP +With \fB\-l\fP or \fB\-L\fP, features provided by the module are listed\&. With +\fB\-l\fP alone, a list of features together with their states is shown, one +feature per line\&. With \fB\-L\fP alone, a \fBzmodload \-F\fP command that would +cause enabled features of the module to be turned on is shown\&. With +\fB\-lL\fP, a \fBzmodload \-F\fP command that would cause all the features to be +set to their current state is shown\&. If one of these combinations is given +with the option \fB\-P\fP \fIparam\fP then the parameter \fIparam\fP is set to an +array of features, either features together with their state or (if +\fB\-L\fP alone is given) enabled features\&. +.PP +With the option \fB\-L\fP the module name may be omitted; then a list +of all enabled features for all modules providing features is printed +in the form of \fBzmodload \-F\fP commands\&. If \fB\-l\fP is also given, +the state of both enabled and disabled features is output in that form\&. +.PP +A set of features may be provided together with \fB\-l\fP or \fB\-L\fP and a +module name; in that case only the state of those features is +considered\&. Each feature may be preceded by \fB+\fP or \fB\-\fP but the +character has no effect\&. If no set of features is provided, all +features are considered\&. +.PP +With \fB\-e\fP, the command first tests that the module is loaded; +if it is not, status 1 is returned\&. If the module is loaded, +the list of features given as an argument is examined\&. Any feature +given with no prefix is simply tested to see if the module provides it; +any feature given with a prefix \fB+\fP or \fB\-\fP is tested to +see if is provided and in the given state\&. If the tests on all features +in the list succeed, status 0 is returned, else status 1\&. +.PP +With \fB\-m\fP, each entry in the given list of features is taken +as a pattern to be matched against the list of features provided +by the module\&. An initial \fB+\fP or \fB\-\fP must be given explicitly\&. +This may not be combined with the \fB\-a\fP option as autoloads must +be specified explicitly\&. +.PP +With \fB\-a\fP, the given list of features is marked for autoload from +the specified module, which may not yet be loaded\&. An optional \fB+\fP +may appear before the feature name\&. If the feature is prefixed with +\fB\-\fP, any existing autoload is removed\&. The options \fB\-l\fP and \fB\-L\fP +may be used to list autoloads\&. Autoloading is specific to individual +features; when the module is loaded only the requested feature is +enabled\&. Autoload requests are preserved if the module is +subsequently unloaded until an explicit `\fBzmodload \-Fa\fP \fImodule\fP +\fB\-\fP\fIfeature\fP\&' is issued\&. It is not an error to request an autoload +for a feature of a module that is already loaded\&. +.PP +When the module is loaded each autoload is checked against the features +actually provided by the module; if the feature is not provided the +autoload request is deleted\&. A warning message is output; if the +module is being loaded to provide a different feature, and that autoload +is successful, there is no effect on the status of the current command\&. +If the module is already loaded at the time when \fBzmodload \-Fa\fP is +run, an error message is printed and status 1 returned\&. +.PP +\fBzmodload \-Fa\fP can be used with the \fB\-l\fP, \fB\-L\fP, \fB\-e\fP and +\fB\-P\fP options for listing and testing the existence of autoloadable +features\&. In this case \fB\-l\fP is ignored if \fB\-L\fP is specified\&. +\fBzmodload \-FaL\fP with no module name lists autoloads for all modules\&. +.PP +Note that only standard features as described above can be autoloaded; +other features require the module to be loaded before enabling\&. +.RE +.TP +.PD 0 +\fBzmodload\fP \fB\-d\fP [ \fB\-L\fP ] [ \fIname\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-d\fP \fIname\fP \fIdep\fP \&.\&.\&. +.TP +.PD +\fBzmodload\fP \fB\-ud\fP \fIname\fP [ \fIdep\fP \&.\&.\&. ] +The \fB\-d\fP option can be used to specify module dependencies\&. The modules +named in the second and subsequent arguments will be loaded before the +module named in the first argument\&. +.RS +.PP +With \fB\-d\fP and one argument, all dependencies for that module are listed\&. +With \fB\-d\fP and no arguments, all module dependencies are listed\&. This +listing is by default in a Makefile\-like format\&. The \fB\-L\fP option +changes this format to a list of \fBzmodload \-d\fP commands\&. +.PP +If \fB\-d\fP and \fB\-u\fP are both used, dependencies are removed\&. If only one +argument is given, all dependencies for that module are removed\&. +.RE +.TP +.PD 0 +\fBzmodload\fP \fB\-ab\fP [ \fB\-L\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-ab\fP [ \fB\-i\fP ] \fIname\fP [ \fIbuiltin\fP \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-ub\fP [ \fB\-i\fP ] \fIbuiltin\fP \&.\&.\&. +The \fB\-ab\fP option defines autoloaded builtins\&. It defines the specified +\fIbuiltin\fPs\&. When any of those builtins is called, the module specified +in the first argument is loaded and all its features are enabled (for +selective control of features use `\fBzmodload \-F \-a\fP\&' as described +above)\&. If only the \fIname\fP is given, one builtin is defined, with +the same name as the module\&. \fB\-i\fP suppresses the error if the builtin +is already defined or autoloaded, but not if another builtin of the +same name is already defined\&. +.RS +.PP +With \fB\-ab\fP and no arguments, all autoloaded builtins are listed, with the +module name (if different) shown in parentheses after the builtin name\&. +The \fB\-L\fP option changes this format to a list of \fBzmodload \-a\fP +commands\&. +.PP +If \fB\-b\fP is used together with the \fB\-u\fP option, it removes builtins +previously defined with \fB\-ab\fP\&. This is only possible if the builtin is +not yet loaded\&. \fB\-i\fP suppresses the error if the builtin is already +removed (or never existed)\&. +.PP +Autoload requests are retained if the module is subsequently unloaded +until an explicit `\fBzmodload \-ub\fP \fIbuiltin\fP\&' is issued\&. +.RE +.TP +.PD 0 +\fBzmodload\fP \fB\-ac\fP [ \fB\-IL\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-ac\fP [ \fB\-iI\fP ] \fIname\fP [ \fIcond\fP \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-uc\fP [ \fB\-iI\fP ] \fIcond\fP \&.\&.\&. +The \fB\-ac\fP option is used to define autoloaded condition codes\&. The +\fIcond\fP strings give the names of the conditions defined by the +module\&. The optional \fB\-I\fP option is used to define infix condition +names\&. Without this option prefix condition names are defined\&. +.RS +.PP +If given no condition names, all defined names are listed (as a series of +\fBzmodload\fP commands if the \fB\-L\fP option is given)\&. +.PP +The \fB\-uc\fP option removes definitions for autoloaded conditions\&. +.RE +.TP +.PD 0 +\fBzmodload\fP \fB\-ap\fP [ \fB\-L\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-ap\fP [ \fB\-i\fP ] \fIname\fP [ \fIparameter\fP \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-up\fP [ \fB\-i\fP ] \fIparameter\fP \&.\&.\&. +The \fB\-p\fP option is like the \fB\-b\fP and \fB\-c\fP options, but makes +\fBzmodload\fP work on autoloaded parameters instead\&. +.TP +.PD 0 +\fBzmodload\fP \fB\-af\fP [ \fB\-L\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-af\fP [ \fB\-i\fP ] \fIname\fP [ \fIfunction\fP \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-uf\fP [ \fB\-i\fP ] \fIfunction\fP \&.\&.\&. +The \fB\-f\fP option is like the \fB\-b\fP, \fB\-p\fP, and \fB\-c\fP options, but +makes \fBzmodload\fP work on autoloaded math functions instead\&. +.TP +.PD 0 +\fBzmodload\fP \fB\-a\fP [ \fB\-L\fP ] +.TP +.PD 0 +\fBzmodload\fP \fB\-a\fP [ \fB\-i\fP ] \fIname\fP [ \fIbuiltin\fP \&.\&.\&. ] +.TP +.PD +\fBzmodload\fP \fB\-ua\fP [ \fB\-i\fP ] \fIbuiltin\fP \&.\&.\&. +Equivalent to \fB\-ab\fP and \fB\-ub\fP\&. +.TP +\fBzmodload \-e\fP [ \fB\-A\fP ] [ \fIstring\fP \&.\&.\&. ] +The \fB\-e\fP option without arguments lists all loaded modules; if the \fB\-A\fP +option is also given, module aliases corresponding to loaded modules are +also shown\&. If arguments are provided, nothing is printed; +the return status is set to zero if all \fIstring\fPs given as arguments +are names of loaded modules and to one if at least on \fIstring\fP is not +the name of a loaded module\&. This can be used to test for the +availability of things implemented by modules\&. In this case, any +aliases are automatically resolved and the \fB\-A\fP flag is not used\&. +.TP +\fBzmodload\fP \fB\-A\fP [ \fB\-L\fP ] [ \fImodalias\fP[\fB=\fP\fImodule\fP] \&.\&.\&. ] +For each argument, if both \fImodalias\fP and \fImodule\fP are given, +define \fImodalias\fP to be an alias for the module \fImodule\fP\&. +If the module \fImodalias\fP is ever subsequently requested, either via a +call to \fBzmodload\fP or implicitly, the shell will attempt to load +\fImodule\fP instead\&. If \fImodule\fP is not given, show the definition of +\fImodalias\fP\&. If no arguments are given, list all defined module aliases\&. +When listing, if the \fB\-L\fP flag was also given, list the definition as a +\fBzmodload\fP command to recreate the alias\&. +.RS +.PP +The existence of aliases for modules is completely independent of whether +the name resolved is actually loaded as a module: while the alias exists, +loading and unloading the module under any alias has exactly the same +effect as using the resolved name, and does not affect the connection +between the alias and the resolved name which can be removed either by +\fBzmodload \-R\fP or by redefining the alias\&. Chains of aliases (i\&.e\&. where +the first resolved name is itself an alias) are valid so long as these are +not circular\&. As the aliases take the same format as module names, they +may include path separators: in this case, there is no requirement for any +part of the path named to exist as the alias will be resolved first\&. For +example, `\fBany/old/alias\fP\&' is always a valid alias\&. +.PP +Dependencies added to aliased modules are actually added to the resolved +module; these remain if the alias is removed\&. It is valid to create an +alias whose name is one of the standard shell modules and which resolves to +a different module\&. However, if a module has dependencies, it +will not be possible to use the module name as an alias as the module will +already be marked as a loadable module in its own right\&. +.PP +Apart from the above, aliases can be used in the \fBzmodload\fP command +anywhere module names are required\&. However, aliases will not be +shown in lists of loaded modules with a bare `\fBzmodload\fP\&'\&. +.RE +.TP +\fBzmodload\fP \fB\-R\fP \fImodalias\fP \&.\&.\&. +For each \fImodalias\fP argument that was previously defined as a module +alias via \fBzmodload \-A\fP, delete the alias\&. If any was not defined, an +error is caused and the remainder of the line is ignored\&. +.PP +Note that \fBzsh\fP makes no distinction between modules that were linked +into the shell and modules that are loaded dynamically\&. In both cases +this builtin command has to be used to make available the builtins and +other things defined by modules (unless the module is autoloaded on +these definitions)\&. This is true even for systems that don\&'t support +dynamic loading of modules\&. +.RE +.TP +\fBzparseopts\fP +See the section `The zsh/zutil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzprof\fP +See the section `The zsh/zprof Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzpty\fP +See the section `The zsh/zpty Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzregexparse\fP +See the section `The zsh/zutil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzsocket\fP +See the section `The zsh/net/socket Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBzstyle\fP +See the section `The zsh/zutil Module\&' in \fIzshmodules\fP(1)\&. +.TP +\fBztcp\fP +See the section `The zsh/net/tcp Module\&' in \fIzshmodules\fP(1)\&. |