ksh(1)ksh(1)NAME
ksh, rksh - shell, the standard/restricted command programming language
SYNOPSIS
option]... option]... string] [arg]...
option]... option]... string] [arg]...
DESCRIPTION
is a command programming language that executes commands read from a
terminal or a file. is a restricted version of the command interpreter
used to set up login names and execution environments whose capabili‐
ties are more controlled than those of the standard shell. See and
sections later in this entry for details about command line options and
arguments, particularly the command.
Definitions
One of the following characters:
A tab or space character.
A sequence of letters, digits, or underscores
starting with a letter or underscore. Identifiers are
used as names for and
A sequence of characters
separated by one or more non-quoted metacharacters .
A sequence of characters in the syntax of the shell language.
The shell reads each command and carries out the desired
action, either directly or by invoking separate utili‐
ties.
A command that is carried out by the shell
without creating a separate process. Often called
``built-in commands''. Except for documented side
effects, most special commands can be implemented as
separate utilities.
The character is interpreted as the beginning of a comment.
See below.
Commands
A is a sequence of blank-separated words that can be preceded by a
parameter assignment list. (See below). The first word specifies the
name of the command to be executed. Except as specified below, the
remaining words are passed as arguments to the invoked command. The
command name is passed as argument 0 (see exec(2)). The of a simple-
command is its exit status if it terminates normally, or (octal)
200+status if it terminates abnormally (see signal(5) for a list of
status values).
A is a sequence of one or more separated by The standard output of each
command except the last is connected by a pipe (see pipe(2)) to the
standard input of the next command. Each command is run as a separate
process; the shell waits for the last command to terminate. The exit
status of a pipeline is the exit status of the last command in the
pipeline.
A is a sequence of one or more pipelines separated by or and optionally
terminated by or Of these five symbols, and have equal precedence. and
have a higher but also equal precedence. A semicolon causes sequential
execution of the preceding pipeline; an ampersand causes asynchronous
execution of the preceding pipeline (that is, the shell does not wait
for that pipeline to finish). The symbol causes asynchronous execution
of the preceding command or pipeline with a two-way pipe established to
the parent shell (known as a The standard input and output of the
spawned command can be written to and read from by the parent shell
using the option of the special commands and described later. The sym‐
bol causes the list following it to be executed only if the preceding
pipeline returns a zero (nonzero) value. An arbitrary number of new‐
lines can appear in a list, instead of semicolons, to delimit commands.
A is either a simple-command or one of the following. Unless otherwise
stated, the value returned by a command is that of the last simple-com‐
mand executed in the command.
Each time is executed, identifier is set to the next word taken
from the word list. If ... is omitted, executes the
list once for each positional parameter set (see below).
Execution ends when there are no more words in the list.
A command prints on standard error (file descriptor 2),
the set of words, each preceded by a number. If ... is
omitted, the positional parameters are used instead (see
below). The prompt is printed and a line is read from
the standard input. If this line starts with the number
of one of the listed words, the value of the parameter
identifier is set to the word corresponding to this num‐
ber. If this line is empty, the selection list is
printed again. Otherwise the value of the parameter
identifier is set to null. The contents of the line
read from standard input is saved in the parameter The
list is executed for each selection until a or end-of-
file (eof) is encountered.
A command executes the list associated with the first pat‐
tern that matches word. The form of the patterns is
identical to that used for file name generation (see
below).
The list following is executed and, if it returns a zero
exit status, the list following the first is executed.
Otherwise, the list following is executed and, if its
value is zero, the list following the next is executed.
Failing that, the list is executed. If no list or list
is executed, returns a zero exit status.
A command repeatedly executes the list, and if the
exit status of the last command in the list is
zero, executes the list; otherwise the loop ter‐
minates. If no commands in the list are exe‐
cuted, returns a zero exit status; can be used in
place of to negate the loop termination test.
Execute list in a separate environment. If two adjacent
open parentheses are needed for nesting, a space
must be inserted to avoid arithmetic evaluation
as described below.
Execute list, but not in a separate environment. Note
that is a keyword and requires a trailing blank
to be recognized.
Evaluates expression and returns a zero exit status when
expression is true. See below, for a description
of expression. Note that and are keywords and
require blanks between them and expression.
Define a function referred to by
identifier. The body of the function is
the list of commands between and (see
below).
pipeline is executed and the elapsed time, user
time, and system time are printed on stan‐
dard error. Note that the keyword can
appear anywhere in the pipeline to time
the entire pipeline. To time a particular
command in a pipeline, see time(1).
The following keywords are recognized only as the first
word of a command and when not quoted:
Comments
A word beginning with causes that word and all subsequent
characters up to a newline to be ignored.
Aliasing
The first word of each command is replaced by the text of
an if an alias for this word has been defined. An con‐
sists of any number of characters excluding metacharac‐
ters, quoting characters, file expansion characters,
parameter and command substitution characters, and The
replacement string can contain any valid shell script,
including the metacharacters listed above. The first
word of each command in the replaced text, other than any
that are in the process of being replaced, is tested for
additional aliases. If the last character of the alias
value is a the word following the alias is also checked
for alias substitution.
Aliases can be used to redefine special built-in com‐
mands, but cannot be used to redefine the keywords listed
above. Aliases can be created, listed, and exported with
the command and can be removed with the command.
Exported aliases remain in effect for subshells but must
be reinitialized for separate invocations of the shell
(see below).
is performed when scripts are read, not while they are
executed. Therefore, for it to take effect, must be exe‐
cuted before the command referring to the alias is read.
Aliases are frequently used as a shorthand for full path
names. An option to the aliasing facility allows the
value of the alias to be automatically set to the full
path name of the corresponding command. These aliases
are called The value of a tracked alias is defined the
first time the identifier is read and becomes undefined
each time the variable is reset. These aliases remain
tracked so that the next reference redefines the value.
Several tracked aliases are compiled into the shell. The
option of the command converts each command name that is
an identifier into a tracked alias.
The following are compiled into the shell but can be
unset or redefined:
Tilde Substitution
After alias substitution is performed, each word is
checked to see if it begins with an unquoted If it does,
the word up to a is checked to see if it matches a user
name in the file. If a match is found, the and the
matched login name are replaced by the login directory of
the matched user. This is called a tilde substitution.
If no match is found, the original text is left
unchanged. A alone or before a is replaced by the value
of the parameter. A followed by a or is replaced by the
value of the parameter and respectively. In addition,
tilde substitution is attempted when the value of a
parameter assignment begins with a
Command Substitution
The standard output from a command enclosed in parenthe‐
sis preceded by a dollar sign or a pair of back single
quotes (accent grave) can be used as part or all of a
word; trailing newlines are removed. In the second
(archaic) form, the string between the quotes is pro‐
cessed for special quoting characters before the command
is executed (see below). The command substitution can be
replaced by the equivalent but faster
Command substitution of most special commands (built-ins)
that do not perform I/O redirection are carried out with‐
out creating a separate process. However, command sub‐
stitution of a function creates a separate process to
execute the function and all commands (built-in or other‐
wise) in that function.
An arithmetic expression enclosed in double parentheses
preceded by a dollar sign is replaced by the value of the
arithmetic expression within the double parentheses (see
below for a description of arithmetic expressions).
Parameter Substitution
A is an one or more digits, or any of the characters and
A (a parameter denoted by an identifier) has a value and
zero or more attributes. Named parameters can be
assigned values and attributes by using the special com‐
mand. Attributes supported by are described later with
the special command. Exported parameters pass values and
attributes to the environment.
The shell supports a limited one-dimensional array facil‐
ity. An element of an array parameter is referenced by a
subscript. A subscript is denoted by a followed by an
arithmetic expression (see below) followed by a To assign
values to an array, use name value .... The value of all
subscripts must be in the range of through Arrays need
not be declared. Any reference to a named parameter with
a valid subscript is legal and an array is created if
necessary. Referencing an array without a subscript is
equivalent to referencing the first element.
The value of a named parameter can also be assigned by
writing:
If the integer attribute is set for name, the value is
subject to arithmetic evaluation as described below.
Positional parameters, parameters denoted by a number,
can be assigned values with the special command. Parame‐
ter is set from argument zero when the shell is invoked.
The character is used to introduce substitutable parame‐
ters.
Substitute the value of the parameter, if any.
Braces are required when
parameter is followed by a
letter, digit, or underscore
that should not be interpreted
as part of its name or when a
named parameter is sub‐
scripted.
If parameter is one or more
digits, it is a positional
parameter. A positional
parameter of more than one
digit must be enclosed in
braces. If parameter is or
all the positional parameters,
starting with are substituted
(separated by a field separa‐
tor character). If an array
identifier with subscript or
is used, the value for each
element is substituted (sepa‐
rated by a field separator
character). The shell reads
all the characters from to the
matching as part of the same
word even if it contains
braces or metacharacters.
If parameter is or the number of
positional parameters is sub‐
stituted. Otherwise, the
length of the value of the
parameter is substituted.
Substitute the number of elements in the array
identifier.
If parameter is set and is non-
null, substitute its value;
otherwise substitute word.
If parameter is not set or is
null, set it to word; then
substitute the value of the
parameter. Positional parame‐
ters cannot be assigned in
this way.
If parameter is set and is non-
null, substitute its value;
otherwise, print word and exit
from the shell. If word is
omitted, a standard message is
printed.
If parameter is set and is non-
null, substitute word; other‐
wise substitute nothing.
If the shell pat‐
tern matches the
beginning of the
value of parame‐
ter, the value
of this substi‐
tution is the
value of the
parameter with
the matched por‐
tion deleted;
otherwise the
value of this
parameter is
substituted. In
the former case,
the smallest
matching pattern
is deleted; in
the latter case,
the largest
matching pattern
is deleted.
If the shell pat‐
tern
matches
the
end
of
the
value
of
param‐
e‐
ter,
the
value
of
param‐
e‐
ter
with
the
matched
part
is
deleted;
oth‐
er‐
wise
sub‐
sti‐
tute
the
value
of
param‐
e‐
ter.
In
the
for‐
mer,
the
small‐
est
match‐
ing
pat‐
tern
is
deleted;
in
the
lat‐
ter,
the
largest
match‐
ing
pat‐
tern
is
deleted.
In the above, word is
not evaluated unless
it is used as the sub‐
stituted string.
Thus, in the following
example, is executed
only if is not set or
is null:
If the colon is omit‐
ted from the above
expressions, the shell
only checks to deter‐
mine whether or not
parameter is set.
The following parameters are
set automatically by the
shell:
The number of posi‐
tional parameters in
decimal.
Options supplied to
the shell on invoca‐
tion or by
the
com‐
mand.
The decimal value
returned by the last
executed command.
The process number of
this shell.
Initially, the value
of
is an
abso‐
lute
path‐
name of
the
shell
or
script
being
exe‐
cuted
as
passed
in the
envi‐
ron‐
ment.
Subse‐
quently
it is
assigned
the
last
argu‐
ment of
the
previ‐
ous
com‐
mand.
This
parame‐
ter is
not set
for
com‐
mands
which
are
asyn‐
chro‐
nous.
This
parame‐
ter is
also
used to
hold
the
name of
the
match‐
ing
file
when
check‐
ing for
mail.
The process number of
the last background
command invoked.
If this variable is
set,
its
value
is used
to
define
the
width
of the
edit
window
for the
shell
edit
modes
and for
print‐
ing
lists.
In a
win‐
dowed
envi‐
ron‐
ment,
if the
shell
detects
that
the
window
size
has
changed,
the
shell
updates
the
value
of
The value of as set
by the
most
recently
failed
system
call.
This
value
is sys‐
tem
depen‐
dent
and is
intended
for
debug‐
ging
pur‐
poses.
The line number of the
current line within
the script or
func‐
tion
being
exe‐
cuted.
If this variable is
set,
the
value
is used
to
deter‐
mine
the
column
length
for
print‐
ing
lists.
lists
print
verti‐
cally
until
about
two-
thirds
of
lines
are
filled.
In a
win‐
dowed
envi‐
ron‐
ment,
if the
shell
detects
that
the
window
size
has
changed,
the
shell
updates
the
value
of
The previous working
directory set by the
com‐
mand.
The value of the last
option argument pro‐
cessed by the
special
com‐
mand.
The index of the last
option argument pro‐
cessed by the
special
com‐
mand.
The process number of
the parent of the
shell.
The present working
directory set by the
com‐
mand.
Each time this parame‐
ter is evaluated, a
random integer, uni‐
formly
dis‐
trib‐
uted
between
0 and
32767,
is gen‐
erated.
The
sequence
of ran‐
dom
numbers
can be
ini‐
tial‐
ized by
assign‐
ing a
numeric
value
to
This parameter is set
by the
state‐
ment
and by
the
special
command
when no
argu‐
ments
are
sup‐
plied.
Each time this parame‐
ter is referenced,
the
number
of sec‐
onds
since
shell
invoca‐
tion is
returned.
If this
parame‐
ter is
assigned
a
value,
the
value
returned
upon
refer‐
ence is
the
value
that
was
assigned
plus
the
number
of sec‐
onds
since
the
assign‐
ment.
The following parameters are
used by the shell:
The search path for
the
com‐
mand.
If the value of this
variable ends in
or and
the
vari‐
able is
not
set,
the
corre‐
spond‐
ing
option
is
turned
on (see
in
below).
If this parameter is
set,
parame‐
ter
substi‐
tution
is per‐
formed
on the
value
to gen‐
erate
the
path
name of
the
script
to be
exe‐
cuted
when
the
shell
is
invoked
(see
below).
This
file is
typi‐
cally
used
for
alias
and
func‐
tion
defini‐
tions.
The default editor
name for the
com‐
mand.
The search path for
function definitions.
This
path is
searched
when a
func‐
tion
with
the
attribute
is ref‐
erenced
and
when a
command
is not
found.
If an
exe‐
cutable
file is
found,
then it
is read
and
exe‐
cuted
in the
current
envi‐
ron‐
ment.
Internal field separa‐
tors, normally
space,
tab,
and
newline
that
are
used to
sepa‐
rate
command
words
result‐
ing
from
command
or
parame‐
ter
substi‐
tution,
and for
sepa‐
rating
words
with
the
special
command
The
first
charac‐
ter of
the
parame‐
ter is
used to
sepa‐
rate
argu‐
ments
for the
substi‐
tution
(see
below).
If this parameter is
set when the shell is
invoked,
its
value
is the
path
name of
the
file
that is
used to
store
the
command
his‐
tory.
The
default
value
is If
the
user
has
appro‐
priate
privi‐
leges
and no
is
given,
then no
history
file is
used
(see
below).
If this parameter is
set when the shell is
invoked,
the
number
of pre‐
viously
entered
com‐
mands
acces‐
sible
to this
shell
will be
greater
than or
equal
to this
number.
The
default
is
The default argument
(home directory) for
the
com‐
mand.
If this parameter is
set to the name of a
mail file and the
parame‐
ter is
not
set,
the
shell
informs
the
user of
arrival
of mail
in the
speci‐
fied
file.
This variable speci‐
fies how often (in
seconds) the
shell
checks
for
changes
in the
modifi‐
cation
time of
any of
the
files
speci‐
fied by
the or
parame‐
ters.
The
default
value
is sec‐
onds.
When
the
time
has
elapsed
the
shell
checks
before
issuing
the
next
prompt.
A list of file names
separated by colons
(:).
If this
parame‐
ter is
set,
the
shell
informs
the
user of
any
modifi‐
cations
to the
speci‐
fied
files
that
have
occurred
within
the
last
sec‐
onds.
Each
file
name
can be
fol‐
lowed
by a
and a
message
to be
printed,
in
which
case
the
message
under‐
goes
parame‐
ter and
command
substi‐
tution
with
the
parame‐
ter
defined
as the
name of
the
changed
file.
The
default
message
is
The search path for
commands (see
below).
The
user
cannot
change
if exe‐
cuting
(except
in the
file).
The value of this
parameter is expanded
for parameter substi‐
tution,
to
define
the
primary
prompt
string
which,
by
default,
is fol‐
lowed
by a
space
charac‐
ter.
The
charac‐
ter in
the
primary
prompt
string
is
replaced
by the
command
number
(see
below).
To
include
a in
the
prompt,
use
Secondary prompt
string, by default
fol‐
lowed
by a
space
charac‐
ter.
Selection prompt
string used within a
loop,
by
default
fol‐
lowed
by a
space
charac‐
ter.
The value of this
variable is expanded
for parameter
substi‐
tution
and
pre‐
cedes
each
line of
an exe‐
cution
trace.
If is
unset,
the
execu‐
tion
trace
prompt
is fol‐
lowed
by a
space
charac‐
ter.
The path name of the
shell is kept in the
environment.
When
invoked,
the
shell
is
restricted
if the
value
of this
vari‐
able
con‐
tains
an in
the
base‐
name.
If set to a value
greater than zero,
the
shell
termi‐
nates
if a
command
is not
entered
within
the
pre‐
scribed
number
of sec‐
onds
after
issuing
the
prompt.
Invokes the corre‐
sponding option when
the value of
this
vari‐
able
ends in
emacs,
gmacs,
or vi
(see in
below).
The shell gives default val‐
ues to and and are never set
automatically by the shell
(although and are set by
login(1)).
Blank Interpretation
After parameter and command
substitution, the results of
substitution are scanned for
field separator characters
(found in and split into dis‐
tinct arguments where such
characters are found.
retains explicit null argu‐
ments or but removes implicit
null arguments (those result‐
ing from parameters that have
no values).
File Name Generation
Following substitution, each
command word is processed as
a pattern for file name
expansion unless the option
has been The form of the pat‐
terns is the Pattern Matching
Notation defined by reg‐
exp(5). The word is replaced
with sorted file names match‐
ing the pattern. If no file
name is found that matches
the pattern, the word is left
unchanged.
In addition to the notation
described in regexp(5), rec‐
ognizes composite patterns
made up of one or more pat‐
tern lists separated from
each other with a Composite
patterns can be formed with
one or more of the following:
Optionally matches any
one of the given pat‐
terns.
Matches zero or more
occurrences of the
given patterns.
Matches one or more
occurrences of the
given patterns.
Matches exactly one of
the given patterns.
Matches anything,
except one of the
given patterns.
Quoting
Each of the metacharacters
listed above (See above) has
a special meaning to the
shell and causes termination
of a word unless quoted. A
character can be (i.e., made
to stand for itself) by pre‐
ceding it with a The pair is
ignored. All characters
enclosed between a pair of
single quote marks are
quoted.
A single quote cannot appear
within single quotes. Inside
double quote marks (...),
parameter and command substi‐
tution occurs and quotes the
characters , and and have
identical meanings when not
quoted or when used as a
parameter assignment value or
as a file name. However,
when used as a command argu‐
ment, is equivalent to ,
where d is the first charac‐
ter of the parameter, whereas
is equivalent to ....
Inside back single quote
(accent grave) marks quotes
the characters and
If the back single quotes
occur within double quotes,
also quotes the character .
The special meaning of key‐
words or aliases can be
removed by quoting any char‐
acter of the keyword. The
recognition of function names
or special command names
listed below cannot be
altered by quoting them.
Arithmetic Evaluation
The ability to perform inte‐
ger arithmetic is provided
with the special command
Evaluations are performed
using long arithmetic. Con‐
stants take the form where
base is a decimal number
between two and thirty-six
representing the arithmetic
base and n is a number in
that base. If base is omit‐
ted, base 10 is used.
An arithmetic expression uses
the same syntax, precedence,
and associativity of expres‐
sion of the C language. All
the integral operators, other
than and are supported.
Variables can be referenced
by name within an arithmetic
expression without using the
parameter substitution syn‐
tax. When a variable is ref‐
erenced, its value is evalu‐
ated as an arithmetic expres‐
sion.
An internal integer represen‐
tation of a variable can be
specified with the option of
the special command. Arith‐
metic evaluation is performed
on the value of each assign‐
ment to a variable with the
attribute. If you do not
specify an arithmetic base,
the first assignment to the
variable determines the
arithmetic base. This base
is used when parameter sub‐
stitution occurs.
Since many of the arithmetic
operators require quoting, an
alternative form of the com‐
mand is provided. For any
command beginning with all
characters until the matching
are treated as a quoted
expression. More precisely,
is equivalent to
Prompting
When used interactively, the
shell prompts with the value
of before reading a command.
If at any time a newline is
typed and further input is
needed to complete a command,
the secondary prompt (the
value of is issued.
Conditional Expressions.
A is used with the compound
command to test attributes of
files and to compare strings.
Word splitting and file name
generation are not performed
on the words between and Each
expression can be constructed
from one or more of the fol‐
lowing unary or binary
expressions:
True if file
exists.
True if file
exists
and
is
a
block
spe‐
cial
file.
True if file
exists
and
is
a
char‐
ac‐
ter
spe‐
cial
file.
True if file
exists
and
is
a
direc‐
tory.
True if file
exists
and
is
an
ordi‐
nary
file.
True if file
exists
and
is
has
its
set‐
gid
bit
set.
True if file
exists
and
is
a
a
sym‐
bolic
link.
True if file
exists
and
is
has
its
sticky
bit
set.
True if length of string
is
nonzero.
True if option named
option
is
on.
True if file
exists
and
is
a
fifo
spe‐
cial
file
or
a
pipe.
True if file
exists
and
is
read‐
able
by
cur‐
rent
process.
True if file
exists
and
has
size
greater
than
zero.
True if file descrip‐
tor number
fildes
is
open
and
asso‐
ci‐
ated
with
a
ter‐
mi‐
nal
device.
True if file
exists
and
is
has
its
setuid
bit
set.
True if file
exists
and
is
writable
by
cur‐
rent
process.
True if file
exists
and
is
exe‐
cutable
by
cur‐
rent
process.
If
file
exists
and
is
a
direc‐
tory,
the
cur‐
rent
process
has
per‐
mis‐
sion
to
search
in
the
direc‐
tory.
True if length of string
is
zero.
True if file
exists
and
is
a
sym‐
bolic
link.
True if file
exists
and
is
owned
by
the
effec‐
tive
user
ID
of
this
process.
True if file
exists
and
its
group
matches
the
effec‐
tive
group
ID
of
this
process.
True if file
exists
and
is
a
socket.
True if file1
exists
and
is
newer
than
file2.
True if file1
exists
and
is
older
than
file2.
True if file1
and
file2
exist
and
refer
to
the
same
file.
True if string
matches
pat‐
tern.
True if string
does
not
match
pat‐
tern.
True if string1
comes
before
string2
based
on
the
ASCII
value
of
their
char‐
ac‐
ters.
True if string1
comes
after
string2
based
on
the
ASCII
value
of
their
char‐
ac‐
ters.
True if exp1
is
equal
to
exp2.
True if exp1
is
not
equal
to
exp2.
True if exp1
is
less
than
exp2.
True if exp1
is
greater
than
exp2.
True if exp1
is
less
than
or
equal
to
exp2.
True if exp1
is
greater
than
or
equal
to
exp2.
A compound expression can be
constructed from these primi‐
tives by using any of the
following, listed in decreas‐
ing order of precedence.
True, if expres‐
sion
is
true.
Used
to
group
expres‐
sions.
True if expres‐
sion
is
false.
True, if expres‐
sion1
and
expres‐
sion2
are
both
true.
True, if either expres‐
sion1
or
expres‐
sion2
is
true.
Input/Output
Before a command is executed,
its input and output can be
redirected using a special
notation interpreted by the
shell. The following can
appear anywhere in a simple-
command or can precede or
follow a command and are not
passed on to the invoked com‐
mand. Command and parameter
substitution occurs before
word or digit is used, except
as noted below. File name
generation occurs only if the
pattern matches a single file
and blank interpretation is
not performed.
Use file word as
stan‐
dard
input
(file
descrip‐
tor
Use file word as
stan‐
dard
output
(file
descrip‐
tor If
the
file
does
not
exist,
it is
cre‐
ated.
If the
file
exists,
and the
option
is on,
an
error
occurs;
other‐
wise,
the
file is
trun‐
cated
to zero
length.
Note
that
the
test is
only
applied
to reg‐
ular
files,
not to
named
pipes
or
other
file
types.
Sames as except
that it
over‐
rides
the
option.
Use file word as
stan‐
dard
output.
If the
file
exists,
output
is
appended
to it
(by
first
search‐
ing for
the
end-of-
file);
other‐
wise,
the
file is
cre‐
ated.
Open file word
for
reading
and
writing
as
stan‐
dard
input.
If the
file
does
not
exist
it is
cre‐
ated.
The shell input is
read up to a line that
matches
word,
or to
an end-
of-
file.
No
parame‐
ter
substi‐
tution,
command
substi‐
tution,
or file
name
genera‐
tion is
per‐
formed
on
word.
The
result‐
ing
docu‐
ment,
called
a
becomes
the
stan‐
dard
input.
If any
charac‐
ter of
word is
quoted,
no
inter‐
preta‐
tion is
placed
upon
the
charac‐
ters of
the
docu‐
ment.
Other‐
wise,
parame‐
ter and
command
substi‐
tution
occurs,
is
ignored,
and
must be
used to
quote
the
charac‐
ters
and the
first
charac‐
ter of
word.
If is
appended
to all
leading
tabs
are
stripped
from
word
and
from
the
docu‐
ment.
The standard input is
duplicated from file
descriptor
digit
(see
dup(2)).
The standard output is
duplicated to file
descriptor
digit
(see
dup(2)).
The standard input is
closed.
The standard output is
closed.
The input from the co-
process is moved to
standard input.
The output to the co-
process is moved to
standard output.
If one of the above is pre‐
ceded by a digit, the file
descriptor number cited is
that specified by the digit
(instead of the default or
For example:
means file descriptor 2 is to
be opened for writing as a
duplicate of file descriptor
1.
Redirection order is signifi‐
cant because the shell evalu‐
ates redirections referencing
file descriptors in terms of
the currently open file asso‐
ciated with the specified
file descriptor at the time
of evaluation. For example:
... 1>fname 2>&1
first assigns file descriptor
1 (standard output) to file
fname, then assigns file
descriptor 2 (standard error)
to the file assigned to file
descriptor 1; i.e., fname.
On the other hand, if the
order of redirection is
reversed as follows:
... 2>&1 1>fname
file descriptor 2 is assigned
to the current standard out‐
put (user terminal unless a
different assignment is
inherited). File descriptor
1 is then reassigned to file
fname without changing the
assignment of file descriptor
2.
The input and output of a co-
process can be moved to a
numbered file descriptor
allowing other commands to
write to them and read from
them using the above redi‐
rection operators. If the
input of the current co-
process is moved to a num‐
bered file descriptor,
another co-process can be
started.
If a command is followed by
and job control is inactive,
the default standard input
for the command is the empty
file Otherwise, the environ‐
ment for the execution of a
command contains the file
descriptors of the invoking
shell as modified by
input/output specifications.
Environment
The (see environ(5)) is a
list of name-value pairs
passed to an executed program
much like a normal argument
list. The names must be and
the values are character
strings.
The shell interacts with the
environment in several ways.
When invoked, the shell scans
the environment and creates a
parameter for each name
found, gives it the corre‐
sponding value, and marks it
export. Executed commands
inherit the environment. If
the user modifies the values
of these parameters or cre‐
ates new ones by using the or
commands, the values become
part of the environment. The
environment seen by any exe‐
cuted command is thus com‐
posed of any name-value pairs
originally inherited by the
shell whose values can be
modified by the current
shell, plus any additions
which must be noted in or
commands.
The environment for any sim‐
ple-command or function can
be augmented by prefixing it
with one or more parameter
assignments. A parameter
assignment argument takes the
form For example,
and
are equivalent (as far as the
above execution of cmd is
concerned except for special
commands listed below that
are preceded by a percent
sign).
If the option is set, all
parameter assignment argu‐
ments are placed in the envi‐
ronment, even if they occur
after the command name. The
following echo statement
prints After the option is
set, the second echo state‐
ment prints only
This feature is intended for
use with scripts written for
early versions of the shell,
and its use in new scripts is
strongly discouraged. It is
likely to disappear someday.
Functions
The keyword (described in the
section above) is used to
define shell functions.
Shell functions are read and
stored internally. Alias
names are resolved when the
function is read. Functions
are executed like commands,
with the arguments passed as
positional parameters (see
below).
Functions execute in the same
process as the caller except
that command substitution of
a function creates a new
process. Functions share all
files and present working
directory with the caller.
Traps caught by the caller
are reset to their default
action inside the function.
If a function does not catch
or specifically ignore a trap
condition, the function ter‐
minates and the condition is
passed on to the caller. A
trap on set inside a function
is executed after the func‐
tion completes in the envi‐
ronment of the caller. Ordi‐
narily, variables are shared
between the calling program
and the function. However,
the special command used
within a function defines
local variables whose scope
includes the current function
and all functions it calls.
The special command is used
to return from function
calls. Errors within func‐
tions return control to the
caller.
Function identifiers can be
listed with the option of the
special command. Function
identifiers and the associ‐
ated text of the functions
can be listed with the option
when used interactively.
stores the function defini‐
tions in the history file.
Hence, will not display the
function definitions if the
history file is lost or if
the option was on when the
function was read. Functions
can be undefined with the
option of the special com‐
mand.
Ordinarily, functions are
unset when the shell executes
a shell script. The option
of the command allows a func‐
tion to be exported to
scripts that are executed
without reinvoking the shell.
Functions that must be
defined across separate invo‐
cations of the shell should
be placed in the file.
Jobs
If the option of the command
is turned on, an interactive
shell associates a with each
pipeline. It keeps a table
of current jobs, printed by
the command, and assigns them
small integer numbers. When
a job is started asyn‐
chronously with the shell
prints a line resembling:
indicating that job number 1
was started asynchronously
and had one (top-level)
process whose process ID was
1234.
If you are running a job and
want to do something else,
type the suspend character
(usually (Ctrl-Z)) to send a
STOP signal to the current
job. The shell then indi‐
cates that the job has been
`Stopped', and prints another
prompt. The state of this
job can be manipulated by
using the command to put it
in the background, running
other commands (while it is
stopped or running in the
background), and eventually
restarting or returning the
job to the foreground by
using the command. A takes
effect immediately and resem‐
bles an interrupt, since
pending output and unread
input are discarded when is
typed.
A job run in the background
stops if it tries to read
from the terminal. Back‐
ground jobs normally are
allowed to produce output,
but can be disabled by giving
the command. If the user
sets this tty option, back‐
ground jobs stop when trying
to produce output.
There are several ways to
refer to jobs in the shell.
A job can be referred to by
the process ID of any process
in the job or by one of the
following:
The job with the given
number.
Any job whose command
line begins with
string.
Any job whose command
line contains
string.
Current job.
Equivalent to
Previous job.
The shell learns immediately
when a process changes state.
It informs the user when a
job is blocked and prevented
from further progress, but
only just before it prints a
prompt.
When the monitor mode is on,
each background job that com‐
pletes triggers any trap set
for
Attempting to leave the shell
while jobs are running or
stopped produces the warning,
Use the command to identify
them. An immediate attempt
to exit again terminates the
stopped jobs; the shell does
not produce a warning the
second time.
Signals
The INT and QUIT signals for
an invoked command are
ignored if the command is
followed by and the option is
off. Otherwise, signals have
the values inherited by the
shell from its parent, with
the exception of signal 11
(but see also the command
below).
Execution
Substitutions are made each
time a command is executed.
If the command name matches
one of the listed below, it
is executed within the cur‐
rent shell process. Next,
checks the command name to
determine whether it matches
one of the user-defined func‐
tions. If it does, saves the
positional parameters and
then sets them to the argu‐
ments of the function call.
The positional parameter is
set to the function name.
When the function completes
or issues a restores the
positional parameter list and
executes any trap set on
within the function. The
value of a function is the
value of the last command
executed.
A function is executed in the
current shell process. If a
command name is not a or a
user-defined creates a
process and attempts to exe‐
cute the command using (see
exec(2)).
The shell parameter defines
the search path for the
directory containing the com‐
mand. Alternative directory
names are separated by a
colon The default path is
(specifying and the current
directory in that order).
Note that the current direc‐
tory is specified by a null
path name which can appear
immediately after the equals
sign, between colon delim‐
iters, or at the end of the
path list.
The search path is not used
if the command name contains
a Otherwise, each directory
in the path is searched for
an executable file.
If the file has execute per‐
missions but is not a direc‐
tory or an executable object
code file, it is assumed to
be a script file, which is a
file of data for an inter‐
preter. If the first two
characters of the script file
are (see exec(2)) expects an
interpreter path name to fol‐
low. then attempts to exe‐
cute the specified inter‐
preter as a separate process
to read the entire script
file. If a call to fails, is
spawned to interpret the
script file. All non-
exported aliases, functions,
and named parameters are
removed in this case.
If the shell command file
does not have read permis‐
sion, or if the setuid and/or
setgid bits are set on the
file, the shell executes an
agent to set up the permis‐
sions and execute the shell
with the shell command file
passed down as an open file.
A parenthesized command is
also executed in a sub-shell
without removing non-exported
quantities.
Command Re-entry
The text of the last (default
128) commands entered from a
terminal device is saved in a
file. The file is used if
the variable is not set or
writable. A shell can access
the commands of all shells
that use the same named
The special command is used
to list or edit a portion of
this file. The portion of
the file to be edited or
listed can be selected by
number or by giving the first
character or characters of
the command. A single com‐
mand or range of commands can
be specified. If no editor
program is specified as an
argument to the value of the
parameter is used. If is not
defined, is used. The edited
command is printed and re-
executed upon leaving the
editor. The editor name is
used to skip the editing
phase and to re-execute the
command. In this case a sub‐
stitution parameter of the
form can be used to modify
the command before execution.
For example, if is aliased to
typing re-executes the most
recent command that starts
with the letter and replaces
the first occurrence of the
string with the string
The history file will be
trimmed when all of the fol‐
lowing conditions occurs:
Its size is greater
than four kilobytes.
The number of commands
in it is more than
The file has not been
modified in the last
ten minutes.
The user has write
permission for the
directory in which the
history file resides.
If any one of the above con‐
ditions does not occur, the
history file will not be
trimmed. When the history
file is trimmed, the latest
commands will be available in
the history file.
Special Commands
The following simple-commands
are executed in the shell
process. They permit
input/output redirection.
Unless otherwise indicated,
file descriptor 1 is the
default output location and
the exit status, when there
are no syntax errors, is
zero. Commands that are pre‐
ceded by or are treated spe‐
cially in the following ways:
1. Variable assign‐
ment lists preced‐
ing the command
remain in effect
when the command
completes.
2. I/O redirections
are processed
after variable
assignments.
3. Certain errors
cause a script
that contains them
to abort.
4. Words following a
command preceded
by %% that are in
the format of a
variable assign‐
ment are expanded
with the same
rules as a vari‐
able assignment.
This means that
tilde substitution
is performed after
the sign and word
splitting and file
name generation
are not performed.
The special commands are list
here:
The command only expands
parameters.
A zero exit
code is
returned.
Read and execute commands
from
file and
return. The
commands are
executed in
the current
shell environ‐
ment. The
search path
specified by
is used to
find the
directory con‐
taining file.
If any argu‐
ments arg are
given, they
become the
positional
parameters.
Otherwise the
positional
parameters are
unchanged.
The exit sta‐
tus is the
exit status of
the last com‐
mand executed.
It is not nec‐
essary that
the execute
permission bit
be set for
file.
with no arguments prints the
list of aliases in the form
on standard
output. An
alias is
defined for
each name
whose value is
given. A
trailing space
in value
causes the
next word to
be checked for
alias substi‐
tution. The
option is used
to set and
list tracked
aliases. The
value of a
tracked alias
is the full
path name cor‐
responding to
the given
name. The
value of a
tracked alias
becomes unde‐
fined when the
value of is
reset, but the
alias remains
tracked.
Without the
option, for
each name in
the argument
list for which
no value is
given, the
name and value
of the alias
is printed.
The option is
used to set or
print exported
aliases. An
exported alias
is defined
across sub-
shell environ‐
ments. Alias
returns true
unless a name
is given for
which no alias
has been
defined.
Puts the specified
jobs into the
background.
The current
job is put in
the background
if job is
unspecified.
See for a
description of
the format of
job.
Exit from the enclosing
or loop, if
any. If n is
specified,
break n lev‐
els.
Resume the next iteration of
the enclosing
or loop. If n
is specified,
resume at the
n-th enclosing
loop.
This command can take
either of two forms.
In the
first
form it
changes
the
current
direc‐
tory to
arg.
If arg
is the
direc‐
tory is
changed
to the
previ‐
ous
direc‐
tory.
The
option
(default)
pre‐
serves
logical
naming
when
treat‐
ing
sym‐
bolic
links.
moves
the
current
direc‐
tory
one
path
compo‐
nent
closer
to the
root
direc‐
tory.
The
option
pre‐
serves
the
physi‐
cal
path
when
treat‐
ing
sym‐
bolic
links.
changes
the
working
direc‐
tory to
the
parent
direc‐
tory of
the
current
direc‐
tory.
The
shell
parame‐
ter is
the
default
arg.
The
parame‐
ter is
set to
the
current
direc‐
tory.
The
shell
parame‐
ter
defines
the
search
path
for the
direc‐
tory
con‐
taining
arg.
Alter‐
native
direc‐
tory
names
are
sepa‐
rated
by a
colon
If is
null or
unde‐
fined,
the
default
value
is the
current
direc‐
tory.
Note
that
the
current
direc‐
tory is
speci‐
fied by
a null
path
name
which
can
appear
immedi‐
ately
after
the
equal
sign or
between
the
colon
delim‐
iters
any‐
where
else in
the
path
list.
If arg
begins
with a
the
search
path is
not
used.
Other‐
wise,
each
direc‐
tory in
the
path is
searched
for
arg.
See
also
cd(1).
The
second
form of
substi‐
tutes
the
string
new for
the
string
old in
the
current
direc‐
tory
name,
and
tries
to
change
to this
new
direc‐
tory.
The
command
cannot
be exe‐
cuted
by
See echo(1)
for
usage
and
descrip‐
tion.
Reads the arguments as
input to the shell
and
exe‐
cutes
the
result‐
ing
com‐
mand(s).
Parameter assignments
remain in effect after
the command completes.
If arg
is
given,
the
command
speci‐
fied by
the
argu‐
ments
is exe‐
cuted
in
place
of this
shell
without
creat‐
ing a
new
process.
Input/out‐
put
argu‐
ments
can
appear
and
affect
the
current
process.
If no
argu‐
ments
are
given,
the
effect
of this
command
is to
modify
file
descrip‐
tors as
pre‐
scribed
by the
input/out‐
put re‐
direct‐
ion
list.
In this
case,
any
file
descrip‐
tor
numbers
greater
than 2
opened
with
this
mecha‐
nism
are
closed
when
invok‐
ing
another
pro‐
gram.
Causes the shell to
exit with the exit
status specified by
n. If
n is
omit‐
ted,
the
exit
status
is that
of the
last
command
exe‐
cuted.
An end-
of-file
also
causes
the
shell
to
exit,
except
when a
shell
has the
ignoreeof
option
set
(see
below).
The given names
are
marked
for
auto‐
matic
export
to the
envi‐
ronment
of sub‐
se‐
quently
exe‐
cuted
com‐
mands.
In the first
form, a range
of commands
from
first
to
last
is
selected
from
the
last
com‐
mands
typed
at
the
ter‐
mi‐
nal.
The
argu‐
ments
first
and
last
can
be
spec‐
i‐
fied
as
a
num‐
ber
or
string.
A
given
string
is
used
to
locate
the
most
recent
com‐
mand.
A
neg‐
a‐
tive
num‐
ber
is
used
to
off‐
set
the
cur‐
rent
com‐
mand
num‐
ber.
The
option
causes
the
com‐
mands
to
be
listed
on
stan‐
dard
out‐
put.
Oth‐
er‐
wise,
the
edi‐
tor
pro‐
gram
ename
is
invoked
on
a
file
con‐
tain‐
ing
these
key‐
board
com‐
mands.
If
ename
is
not
sup‐
plied,
the
value
of
the
param‐
e‐
ter
(default
is
used
as
the
edi‐
tor.
Once
edit‐
ing
has
ended,
the
com‐
mands
(if
any)
are
exe‐
cuted.
If
last
is
omit‐
ted,
only
the
com‐
mand
spec‐
i‐
fied
by
first
is
used.
If
first
is
not
spec‐
i‐
fied,
the
default
is
the
pre‐
vi‐
ous
com‐
mand
for
edit‐
ing
and
−16
for
list‐
ing.
The
option
reverses
the
order
of
the
com‐
mands
and
the
option
sup‐
presses
com‐
mand
num‐
bers
when
list‐
ing.
In
the
lat‐
ter,
the
com‐
mand
is
re-
exe‐
cuted
after
the
sub‐
sti‐
tu‐
tion
is
per‐
formed.
Brings each job
into
the
fore‐
ground
in
the
order
spec‐
i‐
fied.
If
no
job
is
spec‐
i‐
fied,
the
cur‐
rent
job
is
brought
into
the
fore‐
ground.
See
for
a
descrip‐
tion
of
the
for‐
mat
of
job.
Checks arg
for
legal
options.
If
arg
is
omit‐
ted,
the
posi‐
tional
param‐
e‐
ters
are
used.
An
option
argu‐
ment
begins
with
a
or
a
An
option
not
begin‐
ning
with
or
or
the
argu‐
ment
ends
the
options.
opt‐
string
con‐
tains
the
let‐
ters
that
getopts
rec‐
og‐
nizes.
If
a
let‐
ter
is
fol‐
lowed
by
a
that
option
is
expected
to
have
an
argu‐
ment.
The
options
can
be
sep‐
a‐
rated
from
the
argu‐
ment
by
blanks.
places
the
next
option
let‐
ter
it
finds
inside
vari‐
able
name
each
time
it
is
invoked
with
a
pre‐
ced‐
ing
it
when
arg
begins
with
a
The
index
of
the
next
arg
is
stored
in
The
option
argu‐
ment,
if
any,
gets
stored
in
A
lead‐
ing
in
opt‐
string
causes
to
store
the
let‐
ter
of
an
invalid
option
in
and
to
set
name
to
for
an
unknown
option
and
to
when
a
required
option
is
miss‐
ing.
Oth‐
er‐
wise,
prints
an
error
mes‐
sage.
The
exit
sta‐
tus
is
nonzero
when
there
are
no
more
options.
See
also
getopts(1).
Lists informa‐
tion about each
given job; or
all active jobs
if
job
is
omit‐
ted.
The
option
lists
process
ids
in
addi‐
tion
to
the
nor‐
mal
infor‐
ma‐
tion.
The
option
only
dis‐
plays
jobs
that
have
stopped
or
exited
since
last
noti‐
fied.
The
option
causes
only
the
process
group
to
be
listed.
See
for
a
descrip‐
tion
of
the
for‐
mat
of
job.
Sends either
the TERM
(ter‐
mi‐
nate)
sig‐
nal
or
the
spec‐
i‐
fied
sig‐
nal
to
the
spec‐
i‐
fied
jobs
or
pro‐
cesses.
Sig‐
nals
are
given
either
by
num‐
ber
or
name
(as
given
in
sig‐
nal(5),
stripped
of
the
pre‐
fix
The
sig‐
nal
names
are
listed
by
No
default
exists;
merely
typ‐
ing
does
not
affect
the
cur‐
rent
job.
If
the
sig‐
nal
being
sent
is
(ter‐
mi‐
nate)
or
(hangup),
the
job
or
process
is
sent
a
(con‐
tinue)
sig‐
nal
when
stopped.
The
process
argu‐
ment
can
be
either
a
process
ID
or
job.
If
the
first
argu‐
ment
to
is
a
neg‐
a‐
tive
inte‐
ger,
it
is
inter‐
preted
as
a
sig
argu‐
ment
and
not
as
a
process
group.
See
also
kill(1).
Each arg
is
a
sep‐
a‐
rate
to
be
eval‐
u‐
ated.
See
above,
for
a
descrip‐
tion
of
arith‐
metic
expres‐
sion
eval‐
u‐
a‐
tion.
The
exit
sta‐
tus
is
0
if
the
value
of
the
last
expres‐
sion
is
nonzero,
and
1
oth‐
er‐
wise.
Equivalent to ....
The shell out‐
put mechanism.
With
no
options
or
with
option
or
the
argu‐
ments
are
printed
on
stan‐
dard
out‐
put
as
described
by
echo(1).
Raw
mode,
or
ignores
the
escape
con‐
ven‐
tions
of
echo.
The
option
prints
all
sub‐
se‐
quent
argu‐
ments
and
options
other
than
The
option
causes
the
argu‐
ments
to
be
writ‐
ten
onto
the
pipe
of
the
process
spawned
with
instead
of
stan‐
dard
out‐
put.
The
option
causes
the
argu‐
ments
to
be
writ‐
ten
onto
the
his‐
tory
file
instead
of
stan‐
dard
out‐
put.
The
option
can
be
used
to
spec‐
ify
a
one-
digit
file
descrip‐
tor
unit
num‐
ber
n
on
which
the
out‐
put
is
to
be
placed.
The
default
is
1.
If
the
option
is
used,
no
new‐
line
char‐
ac‐
ter
is
added
to
the
out‐
put.
With no argu‐
ments prints
the current
working direc‐
tory
(equiv‐
a‐
lent
to
The
option
(default)
pre‐
serves
the
log‐
i‐
cal
mean‐
ing
of
the
cur‐
rent
direc‐
tory
and
pre‐
serves
the
phys‐
i‐
cal
mean‐
ing
of
the
cur‐
rent
direc‐
tory
if
it
is
a
sym‐
bolic
link.
See
the
spe‐
cial
com‐
mand,
cd(1),
ln(1)),
and
pwd(1).
The shell input
mechanism.
One
line
is
read
and
bro‐
ken
up
into
words
using
the
char‐
ac‐
ters
in
as
sep‐
a‐
ra‐
tors.
In
raw
mode,
at
the
end
of
a
line
does
not
sig‐
nify
line
con‐
tin‐
u‐
a‐
tion.
The
first
word
is
assigned
to
the
first
name,
the
sec‐
ond
word
to
the
sec‐
ond
name,
etc.,
with
remain‐
ing
words
assigned
to
the
last
name.
The
option
causes
the
input
line
to
be
taken
from
the
input
pipe
of
a
process
spawned
by
the
shell
using
If
the
option
is
present,
the
input
is
saved
as
a
com‐
mand
in
the
his‐
tory
file.
The
option
can
be
used
to
spec‐
ify
a
one-
digit
file
descrip‐
tor
unit
to
read
from.
The
file
descrip‐
tor
can
be
opened
with
the
spe‐
cial
com‐
mand.
The
default
value
of
n
is
If
name
is
omit‐
ted,
is
used
as
the
default
name.
The
return
code
is
unless
an
end-
of-
file
is
encoun‐
tered.
An
end-
of-
file
with
the
option
causes
cleanup
for
this
process
so
that
another
process
can
be
spawned.
If
the
first
argu‐
ment
con‐
tains
a
the
remain‐
der
of
this
word
is
used
as
a
when
the
shell
is
inter‐
ac‐
tive.
If
the
given
file
descrip‐
tor
is
open
for
writ‐
ing
and
is
a
ter‐
mi‐
nal
device,
the
prompt
is
placed
on
this
unit.
Oth‐
er‐
wise
the
prompt
is
issued
on
file
descrip‐
tor
2.
The
return
code
is
unless
an
end-
of-
file
is
encoun‐
tered.
See
also
read(1).
The given names
are
marked
read-
only
and
these
names
can‐
not
be
changed
by
sub‐
se‐
quent
assign‐
ment.
Causes a shell to
return
to
the
invok‐
ing
script
with
the
return
sta‐
tus
spec‐
i‐
fied
by
n.
If
n
is
omit‐
ted,
the
return
sta‐
tus
is
that
of
the
last
com‐
mand
exe‐
cuted.
Only
the
low
8
bits
of
n
are
passed
back
to
the
call‐
er.
If
is
invoked
while
not
in
a
or
exe‐
cut‐
ing
a
script
by
the
(dot)
built-
in
com‐
mand,
it
has
the
same
effect
as
an
com‐
mand.
The following
options are
used for this
command:
Array
assign‐
ment. Unset
the
vari‐
able
name
and
assign
val‐
ues
sequen‐
tially
from
the
list
arg.
If
is
used,
the
vari‐
able
name
is
not
unset
first.
All
sub‐
se‐
quent
defined
param‐
e‐
ters
are
auto‐
mat‐
i‐
cally
exported.
If
the
shell
is
non-
inter‐
ac‐
tive
and
if
a
com‐
mand
fails,
exe‐
cute
the trap,
if
set,
and
exit
imme‐
di‐
ately.
This
mode
is
dis‐
abled
while
read‐
ing
pro‐
files.
Dis‐
ables
file
name
gen‐
er‐
a‐
tion.
Each
com‐
mand
whose
name
is
an becomes
a
tracked
alias
when
first
encoun‐
tered.
All
param‐
e‐
ter
assign‐
ment
argu‐
ments (not
just
those
that
pre‐
cede
the
com‐
mand
name)
are
placed
in
the
envi‐
ron‐
ment
for
a
com‐
mand.
Back‐
ground
jobs
are
run
in
a
sep‐
a‐
rate
process
group and
a
line
is
printed
upon
com‐
ple‐
tion.
The
exit
sta‐
tus
of
back‐
ground
jobs
is
reported
in
a
com‐
ple‐
tion
mes‐
sage.
This
option
is
turned
on
auto‐
mat‐
i‐
cally
for
inter‐
ac‐
tive
shells.
Read
com‐
mands
and
check
them
for
syn‐
tax
errors,
but
do
not
exe‐
cute
them. The
option
is
ignored
for
inter‐
ac‐
tive
shells.
The argu‐
ment
takes
any
of
sev‐
eral
option
names,
but
only
one
option
can
be
spec‐
i‐
fied
with
each
option.
If
none
is
sup‐
plied,
the
cur‐
rent
option
set‐
tings
are
printed.
The
argu‐
ment
option
names
fol‐
low:
Same
as
All
back‐
ground
jobs
are
run
at
a
lower
pri‐
or‐
ity.
Same
as
Acti‐
vates
an style
in-
line
edi‐
tor
for
com‐
mand
entry.
Acti‐
vates
a style
in-
line
edi‐
tor
for
com‐
mand
entry.
The
shell
does
not
exit
on
end-
of-
file. The
com‐
mand
must
be
used.
Same
as
All
direc‐
tory
names
result‐
ing
from
file
name
gen‐
er‐
a‐
tion
have
a
trail‐
ing appended.
Same
as
Pre‐
vents
re‐
di‐
rect‐
ion from
trun‐
cat‐
ing
exist‐
ing
reg‐
u‐
lar
files.
Requires
to
trun‐
cate
a
file
when
turned
on.
Same
as
Same
as
Do
not
save
func‐
tion
def‐
i‐
ni‐
tions
in
his‐
tory
file.
Same
as
Same
as
Same
as
Same
as
Acti‐
vates
the
insert
mode
of
a style
in-
line
edi‐
tor
until
you
press
the
ESC
key
which
puts
you
in
move
mode.
A
return
sends
the
line.
Each
char‐
ac‐
ter
is
pro‐
cessed
as
it
is
typed
in mode.
Same
as
Dis‐
ables
pro‐
cess‐
ing
of
the file
and
uses
the
file
instead
of
the
file.
This
mode
is
on
when‐
ever
the
effec‐
tive
uid
(gid)
is
not
equal
to
the
real
uid
(gid).
Turn‐
ing
this
off
causes
the
effec‐
tive
uid
and
gid
to
be
set
to
the
real
uid
and
gid.
Sort
the
posi‐
tional
param‐
e‐
ters.
Exit
after
read‐
ing
and
exe‐
cut‐
ing
one
com‐
mand.
Treat
unset
param‐
e‐
ters
as
an
error
when
sub‐
sti‐
tut‐
ing.
Print
shell
input
lines
as
they
are
read.
Print
com‐
mands
and
their
argu‐
ments
as
they
are
exe‐
cuted.
Turns
off and
options
and
stops
exam‐
in‐
ing
argu‐
ments
for
options.
Do
not
change
any
of
the
options;
use‐
ful
in
set‐
ting
to
a
value
begin‐
ning
with
If
no
argu‐
ments
fol‐
low
this
option,
the
posi‐
tional
param‐
e‐
ters
are
unset.
Using
instead
of
before
a
option
causes
the
option
to
be
turned
off.
These
options
can
also
be
used
when
invok‐
ing
the
shell.
The
cur‐
rent
set
of
options
can
be
exam‐
ined
by
using
Unless
is
spec‐
i‐
fied,
the
remain‐
ing
arg
argu‐
ments
are
posi‐
tional
param‐
e‐
ters
and
are
assigned
con‐
sec‐
u‐
tively
to
....
If
nei‐
ther
argu‐
ments
nor
options
are
given,
the
val‐
ues
of
all
names
are
printed
on
the
stan‐
dard
out‐
put.
The positional
parameters from
...
are
renamed
default
n
is
1.
The
param‐
e‐
ter
n
can
be
any
arith‐
metic
expres‐
sion
that
eval‐
u‐
ates
to
a
non-
neg‐
a‐
tive
num‐
ber
less
than
or
equal
to
Evaluate condi‐
tional expres‐
sion
expr.
See
test(1)
for
usage
and
descrip‐
tion.
The
arith‐
metic
com‐
par‐
i‐
son
oper‐
a‐
tors
are
not
restricted
to
inte‐
gers.
They
allow
any
arith‐
metic
expres‐
sion.
Four
addi‐
tional
prim‐
i‐
tive
expres‐
sions
are
allowed:
True
if file
is
a
sym‐
bolic
link.
True
if file1
is
newer
than
file2.
True
if file1
is
older
than
file2.
True
if file1
has
the
same
device
and
i-
node
num‐
ber
as
file2.
Print the accu‐
mulated user
and system
times for
the
shell
and
for
pro‐
cesses
run
from
the
shell.
arg is
a
com‐
mand
read
and
exe‐
cuted
when
the
shell
receives
sig‐
nal(s)
sig.
(Note
that
arg
is
scanned
once
when
the
trap
is
set
and
once
when
the
trap
is
taken.)
Each
sig
can
be
given
as
a
num‐
ber
or
name
of
the
sig‐
nal.
Trap
com‐
mands
are
exe‐
cuted
in
sig‐
nal
num‐
ber
order.
Any
attempt
to
set
a
trap
on
a
sig‐
nal
that
was
ignored
upon
enter‐
ing
the
cur‐
rent
shell
has
no
effect.
If
arg
is
omit‐
ted
or
is
all
traps
for
sig
are
reset
to
their
orig‐
i‐
nal
val‐
ues.
If
arg
is
the
null
string,
this
sig‐
nal
is
ignored
by
the
shell
and
by
the
com‐
mands
it
invokes.
If
sig
is
arg
is
exe‐
cuted
after
each
com‐
mand.
If
sig
is
arg
is
exe‐
cuted
when‐
ever
a
com‐
mand
has
a
nonzero
exit
code.
If
sig
is
or
and
the
state‐
ment
is
exe‐
cuted
inside
the
body
of
a
func‐
tion,
the
com‐
mand
arg
is
exe‐
cuted
after
the
func‐
tion
com‐
pletes.
If
sig
is
or
for
a
set
out‐
side
any
func‐
tion,
the
com‐
mand
arg
is
exe‐
cuted
on
exit
from
the
shell.
The
com‐
mand
with
no
argu‐
ments
prints
a
list
of
com‐
mands
asso‐
ci‐
ated
with
each
sig‐
nal
num‐
ber.
Parameter
assignments
remain in
effect after
the command
completes.
When
invoked
inside
a
func‐
tion,
a
new
instance
of
the
param‐
e‐
ter
name
is
cre‐
ated.
The
param‐
e‐
ter
value
and
type
are
restored
when
the
func‐
tion
com‐
pletes.
The
fol‐
low‐
ing
list
of
attributes
can
be
spec‐
i‐
fied:
Left
jus‐
tify
and
remove
lead‐
ing
blanks
from value.
If
n
is
nonzero,
it
defines
the
width
of
the
field.
Oth‐
er‐
wise,
it
is
deter‐
mined
by
the
width
of
the
value
of
first
assign‐
ment.
When
the
name
is
assigned,
the
value
is
filled
on
the
right
with
blanks
or
trun‐
cated,
if
nec‐
es‐
sary,
to
fit
into
the
field.
Lead‐
ing
zeros
are
removed
if
the
option
is
also
set.
The
option
is
turned
off.
Right
jus‐
tify
and
fill
with
lead‐
ing
blanks.
If
n
is
nonzero,
it
defines
the
width
of
the
field.
Oth‐
er‐
wise,
it
is
deter‐
mined
by
the
width
of
the
value
of
first
assign‐
ment.
The
field
is
left-
filled
with
blanks
or
trun‐
cated
from
the
end
if
the
param‐
e‐
ter
is
reas‐
signed.
The
option
is
turned
off.
Right
jus‐
tify
and
fill
with
lead‐
ing
zeros if
the
first
non-
blank
char‐
ac‐
ter
is
a
digit
and
the
option
has
not
been
set.
If
n
is
nonzero,
it
defines
the
width
of
the
field.
Oth‐
er‐
wise,
it
is
deter‐
mined
by
the
width
of
the
value
of
first
assign‐
ment.
Cause name
to
refer
to
func‐
tion
names
rather
than
param‐
e‐
ter
names.
No
assign‐
ments
can
be
made
to
the
name
declared
with
the
state‐
ment.
The
only
other
valid
options
are
(which
turns
on
exe‐
cu‐
tion
trac‐
ing
for
this
func‐
tion)
and
(which
allows
the
func‐
tion
to
remain
in
effect
across
shell
pro‐
ce‐
dures
exe‐
cuted
in
the
same
process
envi‐
ron‐
ment).
Param‐
e‐
ter
is
an
inte‐
ger. This
makes
arith‐
metic
faster.
If
n
is
nonzero,
it
defines
the
out‐
put
arith‐
metic
base;
oth‐
er‐
wise
the
first
assign‐
ment
deter‐
mines
the
out‐
put
base.
Con‐
vert
all
upper‐
case
char‐
ac‐
ters
to
low‐
er‐
case. The
upper‐
case
option
is
turned
off.
Any
given name
is
marked
"read
only"
and
can‐
not
be
changed
by
sub‐
se‐
quent
assign‐
ment.
Tag
the
named
param‐
e‐
ters. Tags
are
user
defin‐
able
and
have
no
spe‐
cial
mean‐
ing
to
the
shell.
Con‐
vert
all
low‐
er‐
case
char‐
ac‐
ters
to
upper‐
case
char‐
ac‐
ters. The
low‐
er‐
case
option
is
turned
off.
Mark
any
given name
for
auto‐
matic
export
to
the
envi‐
ron‐
ment
of
sub‐
se‐
quently
exe‐
cuted
com‐
mands.
Using
instead
of
causes
these
options
to
be
turned
off.
If
no
name
argu‐
ments
are
given
but
options
are
spec‐
i‐
fied,
a
list
of
names
(and
option‐
ally
the
val‐
ues)
of
the
param‐
e‐
ters
that
have
these
options
set
is
printed.
Using
instead
of
retains
the
val‐
ues
to
be
printed.
If
nei‐
ther
names
nor
options
are
given,
the
names
and
attributes
of
all
param‐
e‐
ters
are
printed.
Set or display
a resource
limit.
The
limit
for
a
spec‐
i‐
fied
resource
is
set
when
limit
is
spec‐
i‐
fied.
The
value
of
limit
can
be
a
num‐
ber
in
the
unit
spec‐
i‐
fied
with
each
resource,
or
the
key‐
word
The
and
flags
spec‐
ify
whether
the
hard
limit
is
set
or
the
soft
limit
is
set
for
the
given
resource.
A
hard
limit
can‐
not
be
increased
once
it
is
set.
A
soft
limit
can
be
increased
up
to
the
hard
limit.
If
nei‐
ther
nor
is
spec‐
i‐
fied,
the
limit
applies
to
both.
The
cur‐
rent
resource
limit
is
printed
when
limit
is
omit‐
ted.
In
this
case,
the
soft
limit
is
printed
unless
is
spec‐
i‐
fied.
When
more
than
one
resource
is
spec‐
i‐
fied,
the
limit
name
and
unit
are
printed
before
the
value.
If
no
option
is
given,
is
assumed.
The
options
for
are
as
fol‐
lows:
List
all
of
the
cur‐
rent
resource
lim‐
its.
List
or
set
the
num‐
ber
of
512-byte
blocks
in
the
size
of
core
dumps.
List
or
set
the
num‐
ber
of
kilo‐
bytes
in
the
size
of
the
data
area.
List
or
set
the
num‐
ber
of
512-byte
blocks
in
files
writ‐
ten
by
child
pro‐
cesses
(files
of
any
size
can
be
read).
List
or
set
the
num‐
ber
of
kilo‐
bytes
in
the
size
of
the
stack
area.
List
or
set
the
num‐
ber
of
sec‐
onds
to
be
used
by
each
process.
The user file-
creation mask
is set to
mask
(see
umask(2)).
mask
can
either
be
an
octal
num‐
ber
or
a
sym‐
bolic
value
as
described
in
chmod(1).
If
a
sym‐
bolic
value
is
given,
the
new
umask
value
is
the
com‐
ple‐
ment
of
the
result
of
apply‐
ing
mask
to
the
com‐
ple‐
ment
of
the
pre‐
vi‐
ous
umask
value.
If
mask
is
omit‐
ted,
the
cur‐
rent
value
of
the
mask
is
printed.
See
also
umask(1).
The param‐
e‐
ters
given
by
the
list
of
names
are
removed
from
the
alias
list.
The parameters
given by the
list of
names
are
unas‐
signed;
that
is,
their
val‐
ues
and
attributes
are
erased.
Read-
only
vari‐
ables
can‐
not
be
unset.
If
the
option
is
set,
names
refer
to
func‐
tion
names.
Unset‐
ting
and
removes
their
spe‐
cial
mean‐
ing
even
if
they
are
sub‐
se‐
quently
assigned
to.
Wait for the
specified
job
to
ter‐
mi‐
nate
or
stop,
and
report
its
sta‐
tus.
This
sta‐
tus
becomes
the
return
code
for
the
com‐
mand.
If
job
is
not
given,
waits
for
all
cur‐
rently
active
child
pro‐
cesses
to
ter‐
mi‐
nate
and
returns
with
a
zero
exit
sta‐
tus.
See
for
a
descrip‐
tion
of
the
for‐
mat
of
a
job.
For each name,
indi‐
cate
how
it
would
be
inter‐
preted
if
used
as
a
com‐
mand
name.
The
option
pro‐
duces
a
more
ver‐
bose
report.
The
option
does
a
path
search
for
name
even
if
name
is
an
alias,
a
func‐
tion,
or
a
reserved
word.
Invoking ksh
If the shell is
invoked by (see
exec(2)), and
the first char‐
acter of argu‐
ment zero is
the shell is
assumed to be a
login shell and
commands are
read first from
The expression
is then evalu‐
ated and an
attempt to open
the resulting
filename is
made. If the
file is opened
successfully,
the file is
read. Next,
commands are
read from the
file named by
performing
parameter sub‐
stitution on
the value of
the environment
parameter if
the file
exists. If the
option is not
present and arg
is, a path
search is per‐
formed on the
first arg to
determine the
name of the
script to exe‐
cute. When
running with
arg, the script
arg must have
read permission
and any setuid
and getgid set‐
tings are
ignored. Com‐
mands are then
read as
described
below. The
following
options are
interpreted by
the shell when
it is invoked:
If the option
is
present,
com‐
mands
are
read
from
string.
If the option
is
present
or
if
no
argu‐
ments
remain,
com‐
mands
are
read
from
the
stan‐
dard
input.
Shell
out‐
put,
except
for
the
out‐
put
of
some
of
the
listed
above,
is
writ‐
ten
to
file
descrip‐
tor
2.
If the option
is
present
or
if
the
shell
input
and
out‐
put
are
attached
to
a
ter‐
mi‐
nal,
the
shell
is
inter‐
ac‐
tive.
In
this
case,
SIGTERM
is
ignored
(so
that
does
not
kill
an
inter‐
ac‐
tive
shell)
and
SIG‐
INT
+1
is
caught
and
ignored
(so
that
is
inter‐
rupt‐
ible).
In
all
cases,
SIGQUIT
is
ignored
by
the
shell.
(See
sig‐
nal(5).)
If the option
is
present,
the
shell
is
a
restricted
shell.
The remaining
options and
arguments are
described under
the command
above.
rksh Only
is used to set
up login names
and execution
environments
where capabili‐
ties are more
controlled than
those of the
standard shell.
The actions of
are identical
to those of
except that the
following are
forbidden:
· Chang‐
ing
direc‐
tory
(see
cd(1))
· Set‐
ting
the
value
of or
· Spec‐
ify‐
ing
path
or
com‐
mand
names
con‐
tain‐
ing
· Redi‐
rect‐
ing
out‐
put
and
The restric‐
tions above are
enforced after
the and files
are inter‐
preted.
When a command
to be executed
is found to be
a shell proce‐
dure, invokes
to execute it.
Thus, the end-
user is pro‐
vided with
shell proce‐
dures accessi‐
ble to the full
power of the
standard shell,
while being
restricted to a
limited menu of
commands. This
scheme assumes
that the end-
user does not
have write and
execute permis‐
sions in the
same directory.
When a shell
procedure is
invoked from
the shell
interpreter
specified with
the magic
inherits all
the restricted
features of So,
the shell pro‐
cedures written
for execution
under with the
intent of uti‐
lizing the full
power of the
standard shell
should not
specify an
interpreter
with
These rules
effectively
give the writer
of the file
complete con‐
trol over user
actions, by
performing
guaranteed set-
up actions and
leaving the
user in an
appropriate
directory
(probably not
the login
directory).
The system
administrator
often sets up a
directory of
commands (usu‐
ally that can
be safely
invoked by HP-
UX systems pro‐
vide a
restricted edi‐
tor (see
ed(1)), suit‐
able for
restricted
users.
COMMAND-LINE EDITING
In-line Editing
Options
Normally, each
command line
typed at a ter‐
minal device is
followed by a
newline (car‐
riage-return or
line-feed). If
either the or
option is set,
the user can
edit the com‐
mand line. An
editing option
is automati‐
cally selected
each time the
or variable is
assigned a
value ending in
either of these
option names.
The editing
features
require that
the user's ter‐
minal accept as
carriage return
without line
feed and that a
space character
must overwrite
the current
character on
the screen.
ADM terminal
users should
set the
``space/advance''
switch to
``space''.
Hewlett-Packard
terminal users
should set the
straps to
``bcGHxZ etX''.
The editing
modes enable
the user to
look through a
window at the
current line.
The default
window width is
80, unless the
value of is
defined. If
the line is
longer than the
window width
minus two, a
mark displayed
at the end of
the window
notifies the
user. The mark
is a or if the
line extends
respectively on
the right,
left, or both
side(s) of the
window. As the
cursor moves
and reaches the
window bound‐
aries, the win‐
dow is centered
about the cur‐
sor.
The search com‐
mands in each
edit mode pro‐
vide access to
the history
file. Only
strings are
matched, not
patterns,
although a
leading in the
string
restricts the
match to begin
at the first
character in
the line.
Emacs Editing Mode
This mode is
invoked by
either the or
option. Their
sole difference
is their han‐
dling of To
edit, the user
moves the cur‐
sor to the
point needing
correction and
inserts or
deletes charac‐
ters or words.
All editing
commands are
control charac‐
ters or escape
sequences. The
notation for
control charac‐
ters is circum‐
flex followed
by the charac‐
ter. For exam‐
ple, is the
notation for
This is entered
by pressing the
key while hold‐
ing down the
Ctrl (control)
key. The Shift
key is pressed.
(The notation
indicates the
DEL (delete)
key.)
The notation
for escape
sequences is
followed by a
character. For
example, (pro‐
nounced Meta f)
is entered by
depressing ESC
(ASCII 033 )
followed by
would be the
notation for
ESC followed by
Shift (capital)
All edit com‐
mands operate
from any place
on the line
(not only at
the beginning).
Neither the nor
the key is
entered after
edit commands,
except when
noted.
Move cursor
forward (right)
one character.
Move cursor
forward one
word.
(The
edi‐
tor's
idea
of
a
word
is
a
string
of
char‐
ac‐
ters
con‐
sist‐
ing
of
only
let‐
ters,
dig‐
its
and
under‐
scores.)
Move cursor
backward (left)
one character.
Move cursor
backward one
word.
Move cursor to
start of line.
Move cursor to
end of line.
Move cursor
forward to
character
char
on
cur‐
rent
line.
Move cursor
backward to
character
char
on
cur‐
rent
line.
Interchange the
cursor and
mark.
erase (User
defined
erase
char‐
ac‐
ter
as
defined
by
the
stty(1)
com‐
mand,
usu‐
ally
or
Delete
pre‐
vi‐
ous
char‐
ac‐
ter.
Delete current
character.
eof End-
of-
file
char‐
ac‐
ter,
nor‐
mally
ter‐
mi‐
nates
the
shell
if
the
cur‐
rent
line
is
null.
Delete current
word.
(Meta-
backspace)
Delete previous
word.
Delete previous
word.
(Meta-DEL)
Delete previous
word.
If
inter‐
rupt
char‐
ac‐
ter
is
(DEL,
the
default)
this
com‐
mand
does
not
work.
Transpose cur‐
rent character
with next char‐
acter in
mode.
Trans‐
pose
two
pre‐
vi‐
ous
char‐
ac‐
ters
in
mode.
Capitalize cur‐
rent character.
Capitalize cur‐
rent word.
Change the cur‐
rent word to
lowercase.
Delete from the
cursor to the
end of the
line.
If
pre‐
ceded
by
a
numer‐
i‐
cal
param‐
e‐
ter
whose
value
is
less
that
the
cur‐
rent
cur‐
sor
posi‐
tion,
delete
from
the
given
posi‐
tion
up
to
the
cur‐
sor.
If
pre‐
ceded
by
a
numer‐
i‐
cal
param‐
e‐
ter
whose
value
is
greater
than
the
cur‐
rent
cur‐
sor
posi‐
tion,
from
the
cur‐
sor
up
to
the
given
posi‐
tion.
Kill from the
cursor to the
mark.
Push the region
from the cursor
to the mark on
the stack.
kill (User-
defined
kill
char‐
ac‐
ter,
as
defined
by
the
stty(1)
com‐
mand,
usu‐
ally
or
Kill
the
entire
cur‐
rent
line.
If
two
kill
char‐
ac‐
ters
are
entered
in
suc‐
ces‐
sion,
all
sub‐
se‐
quent
con‐
sec‐
u‐
tive
kill
char‐
ac‐
ters
cause
a
line
feed
(use‐
ful
when
using
paper
ter‐
mi‐
nals).
Restore last
item removed
from line
(yank
item
back
to
the
line).
Line feed and
print current
line.
(Null charac‐
ter) Set mark.
(Meta space)
Set mark.
(Newline) Exe‐
cute the cur‐
rent line.
(Return) Exe‐
cute the cur‐
rent line.
Fetch previous
command.
Each
time
is
entered,
the
next
pre‐
vi‐
ous
com‐
mand
in
the
his‐
tory
list
is
accessed.
Fetch next com‐
mand.
Each
time
is
entered
the
next
com‐
mand
in
the
his‐
tory
list
is
accessed.
Fetch the least
recent (oldest)
history line.
Fetch the most
recent
(youngest) his‐
tory line.
Reverse search
history for a
previous com‐
mand line con‐
taining
string.
If
a
param‐
e‐
ter
of
zero
is
given,
the
search
is
for‐
ward.
string
is
ter‐
mi‐
nated
by
a
or
If
string
is
pre‐
ceded
by
a
the
matched
line
must
begin
with
string.
If
string
is
omit‐
ted,
the
next
com‐
mand
line
con‐
tain‐
ing
the
most
recent
string
is
accessed.
In
this
case
a
param‐
e‐
ter
of
zero
reverses
the
direc‐
tion
of
the
search.
Operate - Exe‐
cute the cur‐
rent line
and
fetch
from
the
his‐
tory
file
the
next
line
rel‐
a‐
tive
to
cur‐
rent
line.
Define numeric
parameter.
The
dig‐
its
are
taken
as
a
param‐
e‐
ter
to
the
next
com‐
mand.
The
com‐
mands
that
accept
a
param‐
e‐
ter
are
erase,
and
Softkey. User's
alias
list
is
searched
for
an
alias
by
the
name
and
if
an
alias
of
this
name
is
defined,
its
value
is
inserted
on
the
input
queue.
This
let‐
ter
must
not
be
one
of
the
above
meta-
func‐
tions.
The last word
of the previous
command is
inserted on the
line.
If
pre‐
ceded
by
a
numeric
param‐
e‐
ter,
the
value
of
this
param‐
e‐
ter
deter‐
mines
which
word
to
insert
rather
than
the
last
word.
Same as
Attempt file-
name generation
on the current
word.
File-name com‐
pletion.
Replaces
the
cur‐
rent
word
with
the
long‐
est
com‐
mon
pre‐
fix
of
all
file‐
names
match‐
ing
the
cur‐
rent
word
with
an
aster‐
isk
appended.
If
the
match
is
unique,
a
is
appended
if
the
file
is
a
direc‐
tory
and
a
space
is
appended
if
the
file
is
not
a
direc‐
tory.
List files
matching cur‐
rent word pat‐
tern
as
if
an
aster‐
isk
were
appended.
Multiply param‐
eter of next
command by 4.
Escape next
character.
Edit‐
ing
char‐
ac‐
ters,
the
user's
erase,
kill
and
inter‐
rupt
(nor‐
mally
char‐
ac‐
ters
can
be
entered
in
a
com‐
mand
line
or
in
a
search
string
if
pre‐
ceded
by
a
The
removes
the
next
char‐
ac‐
ter's
edit‐
ing
fea‐
tures
(if
any).
Display version
of the shell.
Insert a at
the
begin‐
ning
of
the
line
and
exe‐
cute
it.
This
causes
a
com‐
ment
to
be
inserted
in
the
his‐
tory
file.
Vi Editing Mode
There are two
typing modes.
Entering a com‐
mand puts you
into mode. To
edit, the user
enters mode by
pressing ESC
and moves the
cursor to the
point needing
correction,
then inserts or
deletes charac‐
ters or words.
Most control
commands accept
an optional
repeat count
prior to the
command.
In mode on most
systems, canon‐
ical processing
is initially
enabled and the
command is
echoed again if
the speed is
1200 baud or
greater and
contains any
control charac‐
ters, or if
less than one
second has
elapsed since
the prompt was
printed. The
ESC character
terminates
canonical pro‐
cessing for the
remainder of
the command and
the user can
then modify the
command line.
This scheme has
the advantages
of canonical
processing with
the type-ahead
echoing of raw
mode.
Setting the
option always
disables canon‐
ical processing
on the termi‐
nal. This mode
is implicit for
systems that do
not support two
alternate end-
of-line delim‐
iters, and can
be helpful for
certain termi‐
nals.
Input Edit Commands
By default the
editor is in
input mode.
erase Delete
pre‐
vi‐
ous
char‐
ac‐
ter.
(erase
is
a
user-
defined
erase
char‐
ac‐
ter,
as
defined
by
the
stty(1)
com‐
mand,
usu‐
ally
or
Delete the pre‐
vious blank
separated word.
Terminate the
shell.
Escape next
character.
Edit‐
ing
char‐
ac‐
ters,
erase
or
kill
char‐
ac‐
ters
can
be
entered
in
a
com‐
mand
line
or
in
a
search
string
if
pre‐
ceded
by
a
removes
the
next
char‐
ac‐
ter's
edit‐
ing
fea‐
tures
(if
any).
Escape the next
erase
or
kill
char‐
ac‐
ter.
Motion Edit Com‐
mands
These commands
move the cur‐
sor. The des‐
ignation
[count] causes
a repetition of
the command the
cited number of
times.
Cursor
forward
(right)
one
charac‐
ter.
Cursor
forward
one
alphanu‐
meric
word.
Cursor
to the
begin‐
ning of
the next
word
that
follows
a blank.
Cursor
to end
of word.
Cursor
to end
of the
current
blank-
delim‐
ited
word.
Cursor
backward
(left)
one
charac‐
ter.
Cursor
backward
one
word.
Cursor
to pre‐
ceding
blank
sepa‐
rated
word.
Cursor
to col‐
umn count.
Default
is
1.
Find the
next
charac‐
ter c
in
the
cur‐
rent
line.
Find the
previous
charac‐
ter c
in
the
cur‐
rent
line.
Equiva‐
lent to fol‐
lowed
by
Equiva‐
lent to fol‐
lowed
by
Repeats
the last
single
charac‐
ter find
command, or
Reverses
the last
single
charac‐
ter find
command.
Cursor
to start
of line.
Cursor
to first
nonblank
charac‐
ter in
line.
Cursor
to end
of line.
Search Edit Com‐
mands
These commands
access your
command his‐
tory.
Fetch
previous
command. Each
time
is
pressed,
the
next
ear‐
lier
com‐
mand
in
the
his‐
tory
list
is
accessed.
Equiva‐
lent to
Fetch
next
command. Each
time
is
entered,
the
next
later
com‐
mand
in
the
his‐
tory
list
is
accessed.
Equiva‐
lent to
The com‐
mand
number count
is
fetched.
The
default
is
the
first
com‐
mand
in
the
his‐
tory
list.
Search
backward
through
history
for a
previous
command
contain‐
ing string.
string
is
ter‐
mi‐
nated
by
a
or
If
string
is
pre‐
ceded
by
a
the
matched
line
must
begin
with
string.
If
string
is
null,
the
pre‐
vi‐
ous
string
is
used.
Same as but
search
in
the
for‐
ward
direc‐
tion.
Search
for next
match of
the last
pattern
to or
com‐
mands.
Search
for next
match of
the last
pattern
to or
but
in
reverse
direc‐
tion.
Search
his‐
tory
for
the
string
entered
by
the
pre‐
vi‐
ous
com‐
mand.
Text Modification
Edit Commands
These commands
modify the
line.
Enter
input
mode and
enter
text
after
the cur‐
rent
charac‐
ter.
Append
text to
the end
of the
line. Equiv‐
a‐
lent
to
Move
cur‐
sor
to
the
char‐
ac‐
ter
posi‐
tion
spec‐
i‐
fied
by motion,
delet‐
ing
all
char‐
ac‐
ters
between
the
orig‐
i‐
nal
cur‐
sor
posi‐
tion
and
new
posi‐
tion,
and
enter
input
mode.
If
motion
is
the
entire
line
is
deleted
and
input
mode
entered.
Delete
the
cur‐
rent
char‐
ac‐
ter
through
the
end
of
line
and
enter
input
mode. Equiv‐
a‐
lent
to
Equiv‐
a‐
lent
to
Delete
the
cur‐
rent
char‐
ac‐
ter
through
end
of
line. Equiv‐
a‐
lent
to
Move
cur‐
sor
to
the
char‐
ac‐
ter
posi‐
tion
spec‐
i‐
fied
by motion,
delet‐
ing
all
char‐
ac‐
ters
between
the
orig‐
i‐
nal
cur‐
sor
posi‐
tion
and
new
posi‐
tion.
If
motion
is
the
entire
line
is
deleted.
Enter
input
mode
and
insert
text
before
the
cur‐
rent
char‐
ac‐
ter.
Insert
text
before
the
begin‐
ning
of
the
line. Equiv‐
a‐
lent
to
the
two-
char‐
ac‐
ter
sequence
Place
the
pre‐
vi‐
ous
text
mod‐
i‐
fi‐
ca‐
tion
before
the
cur‐
sor.
Place
the
pre‐
vi‐
ous
text
mod‐
i‐
fi‐
ca‐
tion
after
the
cur‐
sor.
Enter
input
mode
and
replace
char‐
ac‐
ters
on
the
screen with
char‐
ac‐
ters
you
type
in
over‐
lay
fash‐
ion.
Replace
the
cur‐
rent
char‐
ac‐
ter
with c.
Delete
cur‐
rent
char‐
ac‐
ter.
Delete
pre‐
ced‐
ing
char‐
ac‐
ter.
Repeat
the
pre‐
vi‐
ous
text
mod‐
i‐
fi‐
ca‐
tion
com‐
mand.
Invert
the
case
of
the
cur‐
rent
char‐
ac‐
ter
and
advance
the
cur‐
sor.
Causes
the count
word
of
the
pre‐
vi‐
ous
com‐
mand
to
be
appended
at
the
cur‐
rent
cur‐
sor
loca‐
tion
and
places
the
edi‐
tor
in
input
mode
at
the
end
of
the
appended
text.
The
last
word
is
used
if
count
is
omit‐
ted.
Appends
an to
the
cur‐
rent
word
and
attempts
file
name
gen‐
er‐
a‐
tion.
If
no
match
is
found,
the
bell
rings.
If
a
match
is
found,
the
word
is
replaced
by
the
match‐
ing
string
and
the
com‐
mand
places
the
edi‐
tor
in
input
mode.
ESC
Attempt
file
name
com‐
ple‐
tion
on
the
cur‐
rent
word. Replaces
the
cur‐
rent
word
with
the
long‐
est
com‐
mon
pre‐
fix
of
all
file‐
names
match‐
ing
the
cur‐
rent
word
with
an
aster‐
isk
appended.
If
the
match
is
unique,
a
is
appended
if
the
file
is
a
direc‐
tory
and
a
space
is
appended
if
the
file
is
not
a
direc‐
tory.
Other
Edit
Com‐
mands
Yank
cur‐
rent
char‐
ac‐
ter
through
char‐
ac‐
ter
that motion
would
move
the
cur‐
sor
to
and
puts
them
into
the
delete
buf‐
fer.
The
text
and
cur‐
sor
are
unchanged.
Yanks
from
cur‐
rent
posi‐
tion
to
end
of
line. Equiv‐
a‐
lent
to
Undo
the
last
text
mod‐
i‐
fy‐
ing
com‐
mand.
Undo
all
the
text
mod‐
i‐
fy‐
ing
com‐
mands
per‐
formed
on
the
line.
[count]v Returns
the
com‐
mand
in
the
input
buf‐
fer.
If
count
is
omit‐
ted,
the
cur‐
rent
line
is
used.
Line
feed
and
print
cur‐
rent
line. Has
effect
only
in
con‐
trol
mode.
(New line)
Exe‐
cute
the
cur‐
rent
line,
regard‐
less
of
mode.
(Return)
Exe‐
cute
the
cur‐
rent
line,
regard‐
less
of
mode.
Equiv‐
a‐
lent
to fol‐
lowed
by
Sends
the
line
after
insert‐
ing
a
in
front
of
the
line
and
after
each
new‐
line.
Use‐
ful
for
insert‐
ing
the
cur‐
rent
com‐
mand
line
in
the
his‐
tory
list
with‐
out
exe‐
cut‐
ing
it.
List
the
file‐
names
that
match
the
cur‐
rent
word
if
an
aster‐
isk
were appended
to
it.
The
user's
alias
list
is
searched
for
an
alias
by
the
name and
if
an
alias
of
this
name
is
defined,
its
value
is
inserted
on
the
input
queue
for
pro‐
cess‐
ing.
EXTER‐
NAL
INFLU‐
ENCES
Envi‐
ron‐
ment
Vari‐
ables
deter‐
mines
the
col‐
lat‐
ing
sequence
used
in
eval‐
u‐
at‐
ing
pat‐
tern
match‐
ing
nota‐
tion
for
file
name
gen‐
er‐
a‐
tion.
deter‐
mines
the
clas‐
si‐
fi‐
ca‐
tion
of
char‐
ac‐
ters
as
let‐
ters,
and
the
char‐
ac‐
ters
matched
by
char‐
ac‐
ter
class
expres‐
sions
in
pat‐
tern
match‐
ing
nota‐
tion.
If
or
is
not
spec‐
i‐
fied
in
the
envi‐
ron‐
ment
or
is
set
to
the
empty
string,
the
value
of
is
used
as
a
default
for
each
unspec‐
i‐
fied
or
empty
vari‐
able.
If
is
not
spec‐
i‐
fied
or
is
set
to
the
empty
string,
a
default
of
"C"
(see
lang(5))
is
used
instead
of
If
any
inter‐
na‐
tion‐
al‐
iza‐
tion
vari‐
able
con‐
tains
an
invalid
set‐
ting,
behaves
as
if
all
inter‐
na‐
tion‐
al‐
iza‐
tion
vari‐
ables
are
set
to
"C".
See
env‐
i‐
ron(5).
switches
the
pro‐
cess‐
ing
of
quoted
metachar‐
ac‐
ters
in
""
con‐
structs.
If
is
defined
in
the
envi‐
ron‐
ment,
then
any
part
of
pat‐
tern
can
be
quoted
to
cause
it
to
be
matched
as
a
string.
This
usage
fol‐
lows
the
con‐
ven‐
tions
of
dtksh(1).
If
is
not
defined
in
the
envi‐
ron‐
ment,
then
pro‐
cess‐
ing
fol‐
lows
the
tra‐
di‐
tional
Korn
shell
con‐
ven‐
tions.
Inter‐
na‐
tional
Code
Set
Sup‐
port
Sin‐
gle-
byte
char‐
ac‐
ter
code
sets
are
sup‐
ported.
RETURN
VALUE
Errors
detected
by
the
shell,
such
as
syn‐
tax
errors,
cause
the
shell
to
return
a
nonzero
exit
sta‐
tus.
Oth‐
er‐
wise,
the
shell
returns
the
exit
sta‐
tus
of
the
last
com‐
mand
exe‐
cuted
(also
see
the
com‐
mand
above).
If
the
shell
is
being
used
non-
inter‐
ac‐
tively,
exe‐
cu‐
tion
of
the
shell
file
is
aban‐
doned.
Run‐
time
errors
detected
by
the
shell
are
reported
by
print‐
ing
the
com‐
mand
or
func‐
tion
name
and
the
error
con‐
di‐
tion.
If
the
line
num‐
ber
on
which
the
error
occurred
is
greater
than
one,
the
line
num‐
ber
is
also
printed
in
brack‐
ets
after
the
com‐
mand
or
func‐
tion
name.
WARN‐
INGS
File
descrip‐
tors
10
and
54
through
60
are
used
inter‐
nally
by
the
Korn
Shell.
Appli‐
ca‐
tions
using
these
and
fork‐
ing
a
sub‐
shell
should
not
depend
upon
them
sur‐
viv‐
ing
in
the
sub‐
shell
or
its
descen‐
dants.
If
a
com‐
mand
which
is
a
is
exe‐
cuted,
and
a
com‐
mand
with
the
same
name
is
installed
in
a
direc‐
tory
in
the
search
path
before
the
direc‐
tory
where
the
orig‐
i‐
nal
com‐
mand
was
found,
the
shell
con‐
tin‐
ues
to
load
and
exe‐
cute
the
orig‐
i‐
nal
com‐
mand.
Use
the
option
of
the
com‐
mand
to
cor‐
rect
this
sit‐
u‐
a‐
tion.
If
you
move
the
cur‐
rent
direc‐
tory
or
one
above
it,
may
not
give
the
cor‐
rect
response.
Use
the
com‐
mand
with
a
full
path
name
to
cor‐
rect
this
sit‐
u‐
a‐
tion.
Some
very
old
shell
scripts
con‐
tain
a
caret
as
a
syn‐
onym
for
the
pipe
char‐
ac‐
ter
Note
how‐
ever,
does
not
rec‐
og‐
nize
the
caret
as
a
pipe
char‐
ac‐
ter.
If
a
com‐
mand
is
piped
into
a
shell
com‐
mand,
all
vari‐
ables
set
in
the
shell
com‐
mand
are
lost
when
the
com‐
mand
com‐
pletes.
Using
the
built-
in
com‐
mand
within
a
com‐
pound
com‐
mand
causes
the
entire
com‐
mand
to
dis‐
ap‐
pear
from
the
his‐
tory
file.
The
built-
in
com‐
mand
.
file
reads
the
entire
file
before
any
com‐
mands
are
exe‐
cuted.
There‐
fore,
and
com‐
mands
in
the
file
do
not
apply
to
any
func‐
tions
defined
in
the
file.
Traps
are
not
pro‐
cessed
while
the
shell
is
wait‐
ing
for
a
fore‐
ground
job.
Thus,
a
trap
on
is
not
exe‐
cuted
until
the
fore‐
ground
job
ter‐
mi‐
nates.
The
built-
in
com‐
mand
does
not
han‐
dle
arrays
prop‐
erly.
Only
the
first
ele‐
ment
of
an
array
is
exported
to
the
envi‐
ron‐
ment.
Back‐
ground
pro‐
cesses
started
from
a
non-
inter‐
ac‐
tive
shell
can‐
not
be
accessed
by
using
job
con‐
trol
com‐
mands.
In
an
inter‐
na‐
tional
envi‐
ron‐
ment,
char‐
ac‐
ter
order‐
ing
is
deter‐
mined
by
the
set‐
ting
of
rather
than
by
the
binary
order‐
ing
of
char‐
ac‐
ter
val‐
ues
in
the
machine
col‐
lat‐
ing
sequence.
This
brings
with
it
cer‐
tain
atten‐
dant
dan‐
gers,
par‐
tic‐
u‐
larly
when
using
range
expres‐
sions
in
file
name
gen‐
er‐
a‐
tion
pat‐
terns.
For
exam‐
ple,
the
com‐
mand,
might
be
expected
to
match
all
file
names
begin‐
ning
with
a
low‐
er‐
case
alpha‐
betic
char‐
ac‐
ter.
How‐
ever,
if
dic‐
tio‐
nary
order‐
ing
is
spec‐
i‐
fied
by
it
would
also
match
file
names
begin‐
ning
with
an
upper‐
case
char‐
ac‐
ter
(as
well
as
those
begin‐
ning
with
accented
let‐
ters).
Con‐
versely,
it
would
fail
to
match
let‐
ters
col‐
lated
after
in
lan‐
guages
such
as
Dan‐
ish
or
Nor‐
we‐
gian.
The
cor‐
rect
(and
safe)
way
to
match
spe‐
cific
char‐
ac‐
ter
classes
in
an
inter‐
na‐
tional
envi‐
ron‐
ment
is
to
use
a
pat‐
tern
of
the
form:
This
uses
to
deter‐
mine
char‐
ac‐
ter
classes
and
works
pre‐
dictably
for
all
sup‐
ported
lan‐
guages
and
code‐
sets.
For
shell
scripts
pro‐
duced
on
non-
inter‐
na‐
tion‐
al‐
ized
sys‐
tems
(or
with‐
out
con‐
sid‐
er‐
a‐
tion
for
the
above
dan‐
gers),
it
is
rec‐
om‐
mended
that
they
be
exe‐
cuted
in
a
non-
NLS
envi‐
ron‐
ment.
This
requires
that
etc.,
be
set
to
"C"
or
not
set
at
all.
Be
aware
that
the
value
of
the
vari‐
able
in
the
user's
envi‐
ron‐
ment
affects
the
behav‐
ior
of
scripts.
imple‐
ments
com‐
mand
sub‐
sti‐
tu‐
tion
by
cre‐
at‐
ing
a
pipe
between
itself
and
the
com‐
mand.
If
the
root
file
sys‐
tem
is
full,
the
sub‐
sti‐
tuted
com‐
mand
can‐
not
write
to
the
pipe.
As
a
result,
the
shell
receives
no
input
from
the
com‐
mand,
and
the
result
of
the
sub‐
sti‐
tu‐
tion
is
null.
In
par‐
tic‐
u‐
lar,
using
com‐
mand
sub‐
sti‐
tu‐
tion
for
vari‐
able
assign‐
ment
under
such
cir‐
cum‐
stances
results
in
the
vari‐
able
being
silently
assigned
a
NULL
value.
The
con‐
tents
of
are
stored
in
tem‐
po‐
rary
files
named
After
their
usage,
an
attempt
to
remove
these
tem‐
po‐
rary
files
occurs.
How‐
ever,
because
of
design
lim‐
i‐
ta‐
tions,
some
of
these
tem‐
po‐
rary
files
may
not
be
removed.
AUTHOR
was
devel‐
oped
by
AT&T.
FILES
to
find
home
direc‐
to‐
ries
read
to
set
up
sys‐
tem
envi‐
ron‐
ment
secu‐
rity
pro‐
file
read
to
set
up
user's
cus‐
tom
envi‐
ron‐
ment
for
here-
doc‐
u‐
ments
SEE
ALSO
cat(1),
cd(1),
echo(1),
env(1),
getopts(1),
kill(1),
pwd(1),
read(1),
test(1),
time(1),
umask(1),
vi(1),
dup(2),
exec(2),
fork(2),
gtty(2),
pipe(2),
stty(2),
umask(2),
ulimit(2),
wait(2),
rand(3C),
a.out(4),
pro‐
file(4),
env‐
i‐
ron(5),
lang(5),
reg‐
exp(5),
sig‐
nal(5).
ksh(1)