A parameter has a name, a value, and a number of attributes. A name may
be any sequence of alphanumeric characters and _
's, or the single
characters *
, @
, #
, ?
, -
, $
,
or !
. The value may be either a scalar (a string), an
integer, or an array. To assign a scalar or integer value to a
parameter, use the typeset
builtin. To assign an array value,
use `set -A name value ...'. The value of a
parameter may also be assigned by writing:
name=value ...
If the integer attribute, `-i', is set for name, the value is subject to arithmetic evaluation.
The value of an array parameter may be assigned by writing:
name=(value ...) ...
Individual elements of an array may be selected using a subscript. A
subscript of the form [exp]
selects the single element
exp, where exp is an arithmetic expression which will be subject
to arithmetic expansion as if it were surrounded by $((...))
. The
elements are numbered beginning with 1 unless the KSH_ARRAYS
option
is set when they are numbered from zero.
A subscript of the form [*]
or [@]
evaluates to all elements of
an array; there is no difference between the two except when they appear
within double quotes. "$foo[*]"
evaluates to "$foo[1] $foo[2]
..."
, while "$foo[@]"
evaluates to "$foo[1]"
"$foo[2]"
, etc.
A subscript of the form [exp1,exp2]
selects all elements in the range exp1 to exp2, inclusive. If
one of the subscripts evaluates to a negative number, say -n
, then
the n'th element from the end of the array is used. Thus
$foo[-3]
is the third element from the end of the array
foo
, and $foo[1,-1]
is the same as $foo[*]
.
Subscripting may also be performed on non-array values, in which case
the subscripts specify a substring to be extracted. For example, if
FOO
is set to foobar
, then echo $FOO[2,5]
prints
ooba
.
Subscripts may be used inside braces used to delimit a parameter name, thus
${foo[2]}
is equivalent to $foo[2]
. If the KSH_ARRAYS
option is set, the braced form is the only one that will work, the subscript
otherwise not being treated specially.
If a subscript is used on the left side of an assignment the selected range is replaced by the expression on the right side.
If the opening bracket or the comma is directly followed by an opening parenthesis the string up to the matching closing parenthesis is considered to be a list of flags. The flags currently understood are:
e
w
s:string:
w
flag).
p
print
builtin in the
string argument of a subsequent s
flag.
f
pws:\n:
.
r
w
flag is given,
respectively); note that this is like giving a number: $foo[(r)??,3]
and $foo[(r)??,(r)f*]
work.
R
r
, but gives the last match.
i
r
, but gives the index of the match instead; this may not be
combined with a second argument.
I
i
, but gives the index of the last match.
n:expr:
r
, R
, i
, or I
, makes them
return the n'th or n'th last match (if expr
evaluates to n).
Positional parameters are set by the shell on invocation, by the
set
builtin, or by direct assignment. The parameter n,
where n is a number, is the n'th positional parameter. The
parameters *
, @
, and argv
are arrays containing
all the positional parameters; thus argv[n]
, is equivalent
to simply n.
The following parameters are automatically set by the shell:
!
#
ARGC
#
. It has no special meaning in sh/ksh compatibility mode.
$
-
set
or
setopt
commands.
*
argv
*
. It has no special meaning in sh/ksh compatibility mode.
@
argv[@]
but it can be used in sh/ksh compatibility mode.
?
status
?
. It has no special meaning in sh/ksh compatibility mode.
_
EGID
(EGID=egid ; command)
EUID
(EUID=euid ; command)
ERRNO
errno
as set by the most recently failed system
call. This value is system dependent and is intended for debugging
purposes.
GID
(GID=gid ; command)
HOST
LINENO
LOGNAME
typeset
builtin.
MACHTYPE
OLDPWD
OPTARG
getopts
command.
OPTIND
getopts
command.
OSTYPE
PPID
PWD
RANDOM
RANDOM
.
SECONDS
SHLVL
signals
TTY
TTYIDLE
UID
(UID=uid ; command)
USERNAME
(USERNAME=username ; command)
VENDOR
ZSHNAME
ZSH_NAME
ZSH_VERSION
The following parameters are used by the shell:
ARGV0
BAUD
cdpath (CDPATH)
cd
command.
COLUMNS
DIRSTACKSIZE
AUTO_PUSHD
option.
FCEDIT
fc
builtin.
fignore (FIGNORE)
fpath (FPATH)
histchars
!
). The second character signals the start
of a quick history substitution (default ^
). The third character
is the comment character (default #
).
HISTCHARS
histchars
.
HISTFILE
HISTSIZE
HOME
cd
command.
IFS
read
builtin. Any characters from the set space, tab and
newline that appear in the IFS
are called IFS white space. One
or more IFS white space characters or one non-IFS white space character
together with any adjacent IFS white space character delimit a field. If an
IFS white space character appears twice consecutively in the IFS
, this
character is treated as if it were not an IFS white space character.
KEYTIMEOUT
LANG
LC_
.
LC_ALL
LANG
variable and the
value of any of the other variables starting with LC_
.
LC_COLLATE
LC_CTYPE
LC_MESSAGES
LC_TIME
LINES
LISTMAX
LOGCHECK
watch
parameter.
MAIL
mailpath
is not set, the shell looks
for mail in the specified file.
MAILCHECK
mailpath (MAILPATH)
?
and a message that will be
printed. The message will undergo parameter expansion, command substitution
and arithmetic substitution with the variable $_
defined as the name
of the file that has changed. The default message is `You have
new mail'. If an element is a directory instead of a file the shell will
recursively check every file in every subdirectory of the element.
manpath (MANPATH)
manpath
array can be useful, however, since setting it also
sets MANPATH
, and vice versa.
NULLCMD
cat
. For sh/ksh-like behaviour, change this
to :
. For csh-like behaviour, unset this parameter; the shell will
print an error message if null commands are entered.
path (PATH)
POSTEDIT
PS1
%
and the next character of the
sequence. The following escape sequences are recognized:
%%
%
.
%)
)
.
%d
%/
$PWD
).
%~
$PWD
. If it has a named directory as its prefix, that part is
replaced by a ~
followed by the name of the directory. If it
starts with $HOME
, that part is replaced by a ~
.
%c
%.
%C
$PWD
. An integer may follow the %
to get more than one component. Unless %C
is used, tilde
expansion is performed first.
!
%h
%!
%M
%m
%
to
specify how many components of the hostname are desired.
%S (%s)
%U (%u)
%B (%b)
%t
%@
%T
%*
%n
$USERNAME
.
%w
%W
%D
%D{string}
strftime
function. See
strftime(3)
for more details, if your system has it.
%l
%?
%_
if
and
for
) that have been started on the command line. If given an
integer number, that many strings will be printed; zero or no integer
means print as many as there are.
%E
%#
#
if the shell is running as root, a %
if not.
Equivalent to %(#.#.%%)
%v
psvar
array parameter.
Following the %
with an integer gives that element of the
array.
%{...%}
%(x.true-text.false-text)
x
is
arbitrary; the same character is used to separate the text for the true
result from that for the false result. The separator may not appear in the
true-text
, except as part of a %
sequence. A )
may
appear in the false-text
as a %)
. true-text
and
false-text
may both contain contain arbitrarily-nested escape
sequences, including further ternary expressions. The left parenthesis
may be preceded or followed by a positive integer n
, which defaults
to zero. The test character x
may be any of the following:
c
.
~
/
C
t
T
d
D
w
?
#
g
L
SHLVL
parameter is at least n.
S
SECONDS
parameter is at least n.
v
psvar
has at least n elements.
_
%<string<
%>string>
%[xstring]
%xstringx
, i.e. x
may be <
or >
. The numeric argument, which in the third form may appear
immediately after the [
, specifies the maximum permitted length of
the various strings that can be displayed in the prompt. If this integer is
zero, or missing, truncation is disabled. Truncation is initially
disabled. The forms with <
truncate at the left of the string, and the
forms with >
truncate at the right of the string. For example, if the
current directory is `/home/pike', the prompt %8<..<%/
will expand
to `..e/pike'. The string
will be displayed in place of the
truncated portion of any string. In this string, the terminating character
(<
, >
or ]
), or in fact any character, may be quoted by
a preceding \
. %
sequences are not treated specially. If the
string
is longer than the specified truncation length, it will appear
in full, completely replacing the truncated string.
PS2
$PS1
. The default is `%_> '.
PS3
select
loop. Recognizes the same
escape sequences as PS1
. The default is `?# '.
PS4
PROMPT
PROMPT2
PROMPT3
PROMPT4
PS1
, PS2
, PS3
, and PS4
,
respectively. These parameters do not have any special meaning in sh/ksh
compatibility mode.
psvar (PSVAR)
PROMPT
strings. Setting psvar
also sets PSVAR
, and
vice versa.
prompt
PS1
. It has no special meaning in sh/ksh compatibility
mode.
READNULLCMD
more
.
REPORTTIME
RPROMPT
RPS1
SINGLELINEZLE
option is set. Recognizes the same escape
sequences as PROMPT
.
SAVEHIST
SPROMPT
%R
expands
to the string which presumably needs spelling correction, and %r
expands to the proposed correction. All other PROMPT
escapes are
also allowed.
STTY
stty
command with the value of this parameter as arguments in
order to set up the terminal before executing the command. The modes
apply only to the command, and are reset when it finishes or is
suspended. If the command is suspended and continued later with the
fg
or wait
builtins it will see the modes specified by
STTY
, as if it were not suspended. This (intentionally) does not
apply if the command is continued via kill -CONT
. STTY
is
ignored if the command is run in the background, or if it is in the
environment of the shell but not explicitly assigned to in the input
line. This avoids running stty
at every external command by
accidentally exporting it. Also note that STTY
should not be
used for window size specifications; these will not be local to the
command.
TIMEFMT
time
keyword. The
default is `%E real %U user %S system %P %J'. Recognizes the
following escape sequences:
%
%
.
%U
%S
%E
%P
%J
hh:mm:ss.ttt
format (hours and minutes
are only printed if they are not zero).
TMOUT
ALRM
signal
if a command is not entered within the specified number of seconds after
issuing a prompt. If there is a trap on SIGALRM
, it will be executed
and a new alarm is scheduled using the value of the TMOUT
parameter
after executing the trap. If no trap is set, and the idle time of the
terminal is not less than the value of the TMOUT
parameter, zsh
terminates. Otherwise a new alarm is scheduled to TMOUT
seconds after
the last keypress.
TMPPREFIX
watch (WATCH)
$USERNAME
. An entry in this list may consist of a username, an
@
followed by a remote hostname, and a %
followed by a
line (tty). Any or all of these components may be present in an entry;
if a login/logout event matches all of them, it is reported.
WATCHFMT
watch
parameter is set.
Default is `%n has %a %l from %m'. Recognizes the following escape
sequences:
%n
%a
%l
%M
%m
%m
and %M
escapes will work only if there is a
host name field in the utmp
on your machine. Otherwise they are
treated as ordinary strings.
%S (%s)
%U (%u)
%B (%b)
%t
%@
%T
%w
%W
%D
%(x:true-text:false-text)
x
is
arbitrary; the same character is used to separate the text for the true
result from that for the false result. Both the separator and the right
parenthesis may be escaped with a backslash. Ternary expressions may be
nested.
The test character x
may be any one of l
, n
,
m
, or M
, which indicate a true result if the corresponding
escape sequence would return a non-empty value; or it may be a
,
which indicates a true result if the watched user has logged in, or
false if he has logged out. Other characters evaluate to neither true
nor false; the entire expression is omitted in this case.
If the result is true, then the true-text is formatted according
to the result above and printed, and the false-text is skipped.
If false, the true-text is skipped, and the false-text is
formatted and printed. Either or both of the branches may be empty, but
both separators must always be present.
WORDCHARS
ZDOTDIR
$HOME
.
Go to the first, previous, next, last section, table of contents.