| Server IP : 217.160.0.244 / Your IP : 216.73.216.151 Web Server : Apache System : Linux infong-eu155 4.4.400-icpu-108 #2 SMP Wed Feb 11 11:51:01 UTC 2026 x86_64 User : u100174116 ( 6746176) PHP Version : 8.5.10 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/zsh/help/ |
Upload File : |
typeset [ {+|-}AHUaghlmrtux ] [ {+|-}EFLRZip [ n ] ]
[ + ] [ name[=value] ... ]
typeset -T [ {+|-}Uglrux ] [ {+|-}LRZp [ n ] ]
[ + | SCALAR[=value] array[=(value ...)] [ sep ] ]
typeset -f [ {+|-}TUkmtuz ] [ + ] [ name ... ]
Set or display attributes and values for shell parameters.
Except as noted below for control flags that change the behavior,
a parameter is created for each name that does not already refer
to one. When inside a function, a new parameter is created for
every name (even those that already exist), and is unset again
when the function completes. See `Local Parameters' in zsh-
param(1). The same rules apply to special shell parameters,
which retain their special attributes when made local.
For each name=value assignment, the parameter name is set to
value. If the assignment is omitted and name does not refer to
an existing parameter, a new parameter is initialized to empty
string, zero, or empty array (as appropriate), unless the shell
option TYPESET_TO_UNSET is set. When that option is set, the pa-
rameter attributes are recorded but the parameter remains unset.
If the shell option TYPESET_SILENT is not set, for each remaining
name that refers to a parameter that is already set, the name and
value of the parameter are printed in the form of an assignment.
Nothing is printed for newly-created parameters, or when any at-
tribute flags listed below are given along with the name. Using
`+' instead of minus to introduce an attribute turns it off.
If no name is present, the names and values of all parameters are
printed. In this case the attribute flags restrict the display
to only those parameters that have the specified attributes, and
using `+' rather than `-' to introduce the flag suppresses print-
ing of the values of parameters when there is no parameter name.
All forms of the command handle scalar assignment. Array assign-
ment is possible if any of the reserved words declare, export,
float, integer, local, readonly or typeset is matched when the
line is parsed (N.B. not when it is executed). In this case the
arguments are parsed as assignments, except that the `+=' syntax
and the GLOB_ASSIGN option are not supported, and scalar values
after = are not split further into words, even if expanded (re-
gardless of the setting of the KSH_TYPESET option; this option is
obsolete).
Examples of the differences between command and reserved word
parsing:
# Reserved word parsing
typeset svar=$(echo one word) avar=(several words)
The above creates a scalar parameter svar and an array parameter
avar as if the assignments had been
svar="one word"
avar=(several words)
On the other hand:
# Normal builtin interface
builtin typeset svar=$(echo two words)
The builtin keyword causes the above to use the standard builtin
interface to typeset in which argument parsing is performed in
the same way as for other commands. This example creates a
scalar svar containing the value two and another scalar parameter
words with no value. An array value in this case would either
cause an error or be treated as an obscure set of glob quali-
fiers.
Arbitrary arguments are allowed if they take the form of assign-
ments after command line expansion; however, these only perform
scalar assignment:
var='svar=val'
typeset $var
The above sets the scalar parameter svar to the value val.
Parentheses around the value within var would not cause array as-
signment as they will be treated as ordinary characters when $var
is substituted. Any non-trivial expansion in the name part of
the assignment causes the argument to be treated in this fashion:
typeset {var1,var2,var3}=name
The above syntax is valid, and has the expected effect of setting
the three parameters to the same value, but the command line is
parsed as a set of three normal command line arguments to typeset
after expansion. Hence it is not possible to assign to multiple
arrays by this means.
Note that each interface to any of the commands may be disabled
separately. For example, `disable -r typeset' disables the re-
served word interface to typeset, exposing the builtin interface,
while `disable typeset' disables the builtin. Note that dis-
abling the reserved word interface for typeset may cause problems
with the output of `typeset -p', which assumes the reserved word
interface is available in order to restore array and associative
array values.
Unlike parameter assignment statements, typeset's exit status on
an assignment that involves a command substitution does not re-
flect the exit status of the command substitution. Therefore, to
test for an error in a command substitution, separate the decla-
ration of the parameter from its initialization:
# WRONG
typeset var1=$(exit 1) || echo "Trouble with var1"
# RIGHT
typeset var1 && var1=$(exit 1) || echo "Trouble with var1"
To initialize a parameter param to a command output and mark it
readonly, use typeset -r param or readonly param after the para-
meter assignment statement.
If no attribute flags are given, and either no name arguments are
present or the flag +m is used, then each parameter name printed
is preceded by a list of the attributes of that parameter (array,
association, exported, float, integer, readonly, or undefined for
autoloaded parameters not yet loaded). If +m is used with at-
tribute flags, and all those flags are introduced with +, the
matching parameter names are printed but their values are not.
The following control flags change the behavior of typeset:
+ If `+' appears by itself in a separate word as the last
option, then the names of all parameters (functions with
-f) are printed, but the values (function bodies) are not.
No name arguments may appear, and it is an error for any
other options to follow `+'. The effect of `+' is as if
all attribute flags which precede it were given with a `+'
prefix. For example, `typeset -U +' is equivalent to
`typeset +U' and displays the names of all arrays having
the uniqueness attribute, whereas `typeset -f -U +' dis-
plays the names of all autoloadable functions. If + is
the only option, then type information (array, readonly,
etc.) is also printed for each parameter, in the same man-
ner as `typeset +m "*"'.
-g The -g (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 +g have any
effect except in combination with -m (see below).
-m If the -m flag is given the name arguments are taken as
patterns (use quoting to prevent these from being inter-
preted as file patterns). With no attribute flags, all
parameters (or functions with the -f flag) with matching
names are printed (the shell option TYPESET_SILENT is not
used in this case).
If the +g flag is combined with -m, a new local parameter
is created for every matching parameter that is not al-
ready local. Otherwise -m applies all other flags or as-
signments to the existing parameters.
Except when assignments are made with name=value, using +m
forces the matching parameters and their attributes to be
printed, even inside a function. Note that -m is ignored
if no patterns are given, so `typeset -m' displays attrib-
utes but `typeset -a +m' does not.
-p [ n ]
If the -p option is given, parameters and values are
printed in the form of a typeset command with an assign-
ment, regardless of other flags and options. Note that
the -H flag on parameters is respected; no value will be
shown for these parameters.
-p may be followed by an optional integer argument. Cur-
rently only the value 1 is supported. In this case arrays
and associative arrays are printed with newlines between
indented elements for readability.
-T [ scalar[=value] array[=(value ...)] [ sep ] ]
This flag has a different meaning when used with -f; see
below. Otherwise the -T 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 $PATH and $path. The
optional third argument is a single-character separator
which will be used to join the elements of the array to
form the scalar; if absent, a colon is used, as with
$PATH. Only the first character of the separator is sig-
nificant; any remaining characters are ignored. Multibyte
characters are not yet supported.
Only one of the scalar and array parameters may be as-
signed an initial value (the restrictions on assignment
forms described above also apply).
Both the scalar and the array may be manipulated as nor-
mal. If one is unset, the other will automatically be un-
set too. There is no way of untying the variables without
unsetting them, nor of converting the type of one of them
with another typeset command; +T does not work, assigning
an array to scalar is an error, and assigning a scalar to
array sets it to be a single-element array.
Note that both `typeset -xT ...' and `export -T ...'
work, but only the scalar will be marked for export. Set-
ting the value using the scalar version causes a split on
all separators (which cannot be quoted). It is possible
to apply -T to two previously tied variables but with a
different separator character, in which case the variables
remain joined as before but the separator is changed.
When an existing scalar is tied to a new array, the value
of the scalar is preserved but no attribute other than ex-
port will be preserved.
Attribute flags that transform the final value (-L, -R, -Z, -l,
-u) are only applied to the expanded value at the point of a pa-
rameter expansion expression using `$'. They are not applied
when a parameter is retrieved internally by the shell for any
purpose.
The following attribute flags may be specified:
-A The names refer to associative array parameters; see `Ar-
ray Parameters' in zshparam(1).
-L [ n ]
Left justify and remove leading blanks from the value when
the parameter is expanded. If n is nonzero, it defines
the width of the field. If n is zero, the width is deter-
mined by the width of the value of the first assignment.
In the case of numeric parameters, the length of the com-
plete value assigned to the parameter is used to determine
the width, not the value that would be output.
The width is the count of characters, which may be multi-
byte characters if the MULTIBYTE option is in effect.
Note that the screen width of the character is not taken
into account; if this is required, use padding with para-
meter expansion flags ${(ml...)...} as described in `Para-
meter Expansion Flags' in zshexpn(1).
When the parameter is expanded, it is filled on the right
with blanks or truncated if necessary to fit the field.
Note truncation can lead to unexpected results with nu-
meric parameters. Leading zeros are removed if the -Z
flag is also set.
-R [ n ]
Similar to -L, except that right justification is used;
when the parameter is expanded, the field is left filled
with blanks or truncated from the end. May not be com-
bined with the -Z flag.
-U For arrays (but not for associative arrays), keep only the
first occurrence of each duplicated value. This may also
be set for tied parameters (see -T) or colon-separated
special parameters like PATH or FIGNORE, etc. Note the
flag takes effect on assignment, and the type of the vari-
able being assigned to is determinative; for variables
with shared values it is therefore recommended to set the
flag for all interfaces, e.g. `typeset -U PATH path'.
This flag has a different meaning when used with -f; see
below.
-Z [ n ]
Specially handled if set along with the -L flag. Other-
wise, similar to -R, except that leading zeros are used
for padding instead of blanks if the first non-blank char-
acter is a digit. Numeric parameters are specially han-
dled: they are always eligible for padding with zeroes,
and the zeroes are inserted at an appropriate place in the
output.
-a The names refer to array parameters. An array parameter
may be created this way, but it may be assigned to in the
typeset statement only if the reserved word form of type-
set is enabled (as it is by default). When displaying,
both normal and associative arrays are shown.
-f The names refer to functions rather than parameters. No
assignments can be made, and the only other valid flags
are -t, -T, -k, -u, -U and -z. The flag -t turns on exe-
cution tracing for this function; the flag -T does the
same, but turns off tracing for any named (not anonymous)
function called from the present one, unless that function
also has the -t or -T flag. The -u and -U flags cause the
function to be marked for autoloading; -U also causes
alias expansion to be suppressed when the function is
loaded. See the description of the `autoload' builtin for
details.
Note that the builtin functions provides the same basic
capabilities as typeset -f but gives access to a few extra
options; autoload gives further additional options for the
case typeset -fu and typeset -fU.
-h Hide: only useful for special parameters (those marked
`<S>' in the table in zshparam(1)), and for local parame-
ters with the same name as a special parameter, though
harmless for others. A special parameter with this at-
tribute will not retain its special effect when made lo-
cal. Thus after `typeset -h PATH', a function containing
`typeset PATH' will create an ordinary local parameter
without the usual behaviour of PATH. Alternatively, the
local parameter may itself be given this attribute; hence
inside a function `typeset -h PATH' creates an ordinary
local parameter and the special PATH parameter is not al-
tered in any way. It is also possible to create a local
parameter using `typeset +h special', where the local copy
of special will retain its special properties regardless
of having the -h attribute. Global special parameters
loaded from shell modules (currently those in zsh/mapfile
and zsh/parameter) are automatically given the -h at-
tribute to avoid name clashes.
-H Hide value: specifies that typeset will not display the
value of the parameter when listing parameters; the dis-
play for such parameters is always as if the `+' 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 -m option. This
is on by default for the parameters in the zsh/parameter
and zsh/mapfile modules. Note, however, that unlike the
-h flag this is also useful for non-special parameters.
-i [ n ]
Use an internal integer representation. If n is nonzero
it defines the output arithmetic base, otherwise it is de-
termined by the first assignment. Bases from 2 to 36 in-
clusive are allowed.
-E [ n ]
Use an internal double-precision floating point represen-
tation. On output the variable will be converted to sci-
entific notation. If n is nonzero it defines the number
of significant figures to display; the default is ten.
-F [ n ]
Use an internal double-precision floating point represen-
tation. On output the variable will be converted to
fixed-point decimal notation. If n is nonzero it defines
the number of digits to display after the decimal point;
the default is ten.
-l Convert the result to lower case whenever the parameter is
expanded. The value is not converted when assigned.
-r The given names are marked readonly. Note that if name is
a special parameter, the readonly attribute can be turned
on, but cannot then be turned off.
If the POSIX_BUILTINS option is set, the readonly at-
tribute is more restrictive: unset variables can be marked
readonly and cannot then be set; furthermore, the readonly
attribute cannot be removed from any variable.
It is still possible to change other attributes of the
variable though, some of which like -U or -Z would affect
the value. More generally, the readonly attribute should
not be relied on as a security mechanism.
Note that in zsh (like in pdksh but unlike most other
shells) it is still possible to create a local variable of
the same name as this is considered a different variable
(though this variable, too, can be marked readonly). Spe-
cial variables that have been made readonly retain their
value and readonly attribute when made local.
-t Tags the named parameters. Tags have no special meaning
to the shell. This flag has a different meaning when used
with -f; see above.
-u Convert the result to upper case whenever the parameter is
expanded. The value is not converted when assigned. This
flag has a different meaning when used with -f; see above.
-x Mark for automatic export to the environment of subse-
quently executed commands. If the option GLOBAL_EXPORT is
set, this implies the option -g, unless +g is also explic-
itly given; in other words the parameter is not made local
to the enclosing function. This is for compatibility with
previous versions of zsh.
declare
Same as typeset.
float [ {+|-}Hghlprtux ] [ {+|-}EFLRZ [ n ] ] [ name[=value] ... ]
Equivalent to typeset -E, except that options irrelevant to
floating point numbers are not permitted.
integer [ {+|-}Hghlprtux ] [ {+|-}LRZi [ n ] ] [ name[=value] ... ]
Equivalent to typeset -i, except that options irrelevant to inte-
gers are not permitted.
local [ {+|-}AHUahlprtux ] [ {+|-}EFLRZi [ n ] ] [ name[=value] ... ]
Same as typeset, except that the options -g, and -f are not per-
mitted. In this case the -x option does not force the use of -g,
i.e. exported variables will be local to functions.
readonly
Same as typeset -r. With the POSIX_BUILTINS option set, same as
typeset -gr.