SYNOPSIS

See the built-in command description in the appropriate shell manual
page.

DESCRIPTION

Shell builtin commands are commands that can be executed within the run-
ning shell's process. Note that, in the case of csh(1) builtin commands,
the command is executed in a subshell if it occurs as any component of a
pipeline except the last.
If a command specified to the shell contains a slash `/', the shell will
not execute a builtin command, even if the last component of the speci-
fied command matches the name of a builtin command. Thus, while specify-
ing ``echo'' causes a builtin command to be executed under shells that
support the echo builtin command, specifying ``/bin/echo'' or ``./echo''
does not.
While some builtin commands may exist in more than one shell, their oper-
ation may be different under each shell which supports them. Below is a
table which lists shell builtin commands, the standard shells that sup-
port them and whether they exist as standalone utilities.
Only builtin commands for the csh(1) and sh(1) shells are listed here.
Consult a shell's manual page for details on the operation its builtin
commands. Beware that the sh(1) manual page, at least, calls some of
these commands ``built-in commands'' and some of them ``reserved words''.
Users of other shells may need to consult an info(1) page or other
sources of documentation.
Commands marked ``No**'' under External do exist externally, but are
implemented as scripts using a builtin command of the same name.
CommandExternalcsh(1)sh(1)! No No Yes
% No Yes No
. No No Yes
: No Yes Yes
@ No Yes No
[ Yes No Yes
{ No No Yes
} No No Yes
alias No** Yes Yes
alloc No Yes No
bg No** Yes Yes
bind No No Yes
bindkey No Yes No
break No Yes Yes
breaksw No Yes No
builtin No No Yes
builtins No Yes No
case No Yes Yes
cd No** Yes Yes
chdir No Yes Yes
command No** No Yes
complete No Yes No
continue No Yes Yes
default No Yes No
dirs No Yes No
do No No Yes
done No No Yes
echo Yes Yes Yes
echotc No Yes No
elif No No Yes
else No Yes Yes
end No Yes No
endif No Yes No
endsw No Yes No
esac No No Yes
eval No Yes Yes
exec No Yes Yes
exit No Yes Yes
export No No Yes
false Yes No Yes
fc No** No Yes
fg No** Yes Yes
filetest No Yes No
fi No No Yes
for No No Yes
foreach No Yes No
getopts No** No Yes
glob No Yes No
goto No Yes No
hash No No Yes
hashstat No Yes No
history No Yes No
hup No Yes No
if No Yes Yes
jobid No No Yes
jobs No** Yes Yes
kill Yes Yes Yes
let No No Yes
limit No Yes No
local No No Yes
log No Yes No
login Yes Yes No
logout No Yes No
ls-F No Yes No
nice Yes Yes No
nohup Yes Yes No
notify No Yes No
onintr No Yes No
popd No Yes No
printenv Yes Yes No
printf Yes No Yes
pushd No Yes No
pwd Yes No Yes
read No** No Yes
readonly No No Yes
rehash No Yes No
repeat No Yes No
return No No Yes
sched No Yes No
set No Yes Yes
setenv No Yes No
settc No Yes No
setty No Yes No
setvar No No Yes
shift No Yes Yes
source No Yes No
stop No Yes No
suspend No Yes No
switch No Yes No
telltc No Yes No
termname No Yes No
test Yes No Yes
then No No Yes
time Yes Yes No
times No No Yes
trap No No Yes
true Yes No Yes
type No No Yes
ulimit No No Yes
umask No** Yes Yes
unalias No** Yes Yes
uncomplete No Yes No
unhash No Yes No
unlimit No Yes No
unset No Yes Yes
unsetenv No Yes No
until No No Yes
wait No** Yes Yes
where No Yes No
which Yes Yes No
while No Yes Yes
wordexp No No Yes

NAME

SYNOPSIS

DESCRIPTION

For is a looping command, similar in structure to the C for statement.
The start, next, and body arguments must be Tcl command strings, and
test is an expression string. The for command first invokes the Tcl
interpreter to execute start. Then it repeatedly evaluates test as an
expression; if the result is non-zero it invokes the Tcl interpreter on
body, then invokes the Tcl interpreter on next, then repeats the loop.
The command terminates when test evaluates to 0. If a continue command
is invoked within body then any remaining commands in the current
execution of body are skipped; processing continues by invoking the Tcl
interpreter on next, then evaluating test, and so on. If a break
command is invoked within body or next, then the for command will
return immediately. The operation of break and continue are similar to
the corresponding statements in C. For returns an empty string.
Note: test should almost always be enclosed in braces. If not,
variable substitutions will be made before the for command starts
executing, which means that variable changes made by the loop body will
not be considered in the expression. This is likely to result in an
infinite loop. If test is enclosed in braces, variable substitutions
are delayed until the expression is evaluated (before each loop
iteration), so changes in the variables will be visible. See below for
an example:

EXAMPLES

Print a line for each of the integers from 0 to 9:
for {set x 0} {$x<10} {incr x} {
puts "x is $x"
}
Either loop infinitely or not at all because the expression being
evaluated is actually the constant, or even generate an error! The
actual behaviour will depend on whether the variable x exists before
the for command is run and whether its value is a value that is less
than or greater than/equal to ten, and this is because the expression
will be substituted before the for command is executed.
for {set x 0} $x<10 {incr x} {
puts "x is $x"
}
Print out the powers of two from 1 to 1024:
for {set x 1} {$x<=1024} {set x [expr {$x * 2}]} {
puts "x is $x"
}