shell_builtins

, case

, for

, foreach

, function

, if

, repeat

, select

, switch

, until

, while

- shell command interpreter built-in commands

Description

The shell command interpreters csh(1), ksh(1), ksh93(1), and sh(1) have special built-in
commands. The commands case, for, foreach, function, if, repeat, select, switch, until, and
while are commands in the syntax recognized by the shells. They are
described in the Commands section of the manual pages of the respective
shells. In ksh93(1), fc, hash, stop, suspend, times, and type are aliases
by default. In ksh93, the following built-ins are bound to the /bin
pathname by default and are invoked if the pathname search encounters an executable
command of that name in the /bin or /usr/bin directory: cat, chown,
getconf, head, mkdir, rmdir, tee, uniq, and wc.

The remaining commands listed in the following table are built into the
shells for reasons such as efficiency or data sharing between command invocations.
They are described on their respective manual pages.

Command

Shell

++**alias

csh, ksh, ksh93

bg

csh, ksh, ksh93,
sh

+*break

csh, ksh, ksh93, sh

builtin

ksh93

case

csh, ksh, ksh93, sh

cat

ksh93

cd

csh, ksh, ksh93, sh

chdir

csh, sh

chown

ksh93

command

ksh93

+*continue

csh, ksh,
ksh93, sh

dirs

csh

disown

ksh93

echo

csh, ksh, ksh93, sh

+*eval

csh, ksh, ksh93, sh

+*exec

csh, ksh, ksh93, sh

+*exit

csh, ksh,
ksh93, sh

++**export

ksh, ksh93, sh

false

ksh, ksh93

fc

ksh, ksh93

fg

csh, ksh, ksh93, sh

for

ksh, ksh93, sh

foreach

csh

function

ksh, ksh93

getconf

ksh93

getopts

ksh,
ksh93, sh

glob

csh

goto

csh

hash

ksh, ksh93, sh

hashstat

csh

head

ksh93

hist

ksh93

history

csh

if

csh, ksh, ksh93, sh

jobs

csh, ksh, ksh93, sh

kill

csh, ksh, ksh93,
sh

let

ksh, ksh93,

limit

csh

login

csh, ksh, ksh93, sh

logout

csh

mkdir

ksh93

nice

csh

+*newgrp

ksh, ksh93, sh

nohup

csh

notify

csh

onintr

csh

popd

csh

print

ksh, ksh93

printf

ksh93

pushd

csh

pwd

ksh, ksh93, sh

read

ksh, ksh93, sh

++**readonly

ksh,
ksh93, sh

rehash

csh

repeat

csh

+*return

ksh, ksh93, sh

select

ksh, ksh93

+set

csh, ksh, ksh93, sh

setenv

csh

shift

csh, ksh, ksh93, sh

sleep

ksh93

source

csh

stop

csh, ksh,
ksh93, sh

suspend

csh, ksh, sh

switch

csh

tee

ksh93

test

ksh, ksh93, sh

time

csh

*times

ksh, ksh93, sh

*+trap

ksh, ksh93, sh

true

ksh, ksh93

type

ksh, ksh93,
sh

++**typeset

ksh, ksh93

ulimit

ksh, ksh93, sh

umask

csh, ksh, ksh93, sh

+unalias

csh, ksh, ksh93

unhash

csh

uniq

ksh93

unlimit

csh

+unset

csh, ksh, ksh93, sh

unsetenv

csh

until

ksh,
ksh93, sh

*wait

csh, ksh, ksh93, sh

whence

ksh, ksh93

while

csh, ksh, ksh93, sh

Bourne Shell, sh, Special Commands

Input/output redirection is now permitted for these commands. File descriptor 1 is
the default output location. When Job Control is enabled, additional Special Commands are
added to the shell's environment.

In addition to these built-in reserved command words, sh also uses:

:

No effect; the command does nothing. A zero exit code is returned.

.filename

Read and execute commands from filename and return. The search path specified by PATH is used to find the directory containing filename.

C shell, csh

Built-in commands are executed within the C shell. If a built-in command
occurs as any component of a pipeline except the last, it is
executed in a subshell. In addition to these built-in reserved command words,
csh also uses:

:

Null command. This command is interpreted, but performs no action.

Korn Shell, ksh, Special Commands

Input/Output redirection is permitted. Unless otherwise indicated, the output is written on
file descriptor 1 and the exit status, when there is no syntax
error, is zero.

Commands that are preceded by one or two * (asterisks) are treated
specially in the following ways:

Variable assignment lists preceding the command remain in effect when the command completes.

I/O redirections are processed after variable assignments.

Errors cause a script that contains them to abort.

Words, following a command preceded by ** that are in the format of a variable assignment, are expanded with the same rules as a variable assignment. This means that tilde substitution is performed after the = sign and word splitting and file name generation are not performed.

In addition to these built-in reserved command words, ksh also uses:

* : [ arg . . . ]

The command only expands parameters.

* .file [ arg . . . ]

Read the complete file then execute the commands. The commands are executed in the current shell environment. The search path specified by PATH is used to find the directory containing file. If any arguments arg are specified, they become the positional parameters. Otherwise, the positional parameters are unchanged. The exit status is the exit status of the last command executed. the loop termination test.

Korn Shell, ksh93, Special Commands

Input/Output redirection is permitted. Unless otherwise indicated, the output is written on
file descriptor 1 and the exit status, when there is no syntax
error, is zero.

Except for :, true, false, echo, newgrp, and login, all built-in commands
accept -- to indicate end of options. They also interpret the option
--man as a request to display the manual page onto standard error and
-? as a help request which prints a usage message on standard
error.

Commands that are preceded by one or two + are treated specially
in the following ways:

Variable assignment lists preceding the command remain in effect when the command completes.

I/O redirections are processed after variable assignments.

Errors cause a script that contains them to abort.

They are not valid function names.

Words, following a command preceded by ++ that are in the format of a variable assignment, are expanded with the same rules as a variable assignment. This means that tilde substitution is performed after the = sign and field splitting and file name generation are not performed.

In addition to these built-in reserved command words, ksh93 also uses:

: [ arg . . . ]

The command only expands parameters.

.name [ arg . . . ]

If name is a function defined with the function name reserved word syntax, the function is executed in the current environment (as if it had been defined with the name() syntax.) Otherwise if name refers to a file, the file is read in its entirety and the commands are executed in the current shell environment. The search path specified by PATH is used to find the directory containing the file. If any arguments arg are specified, they become the positional parameters while processing the . command and the original positional parameters are restored upon completion. Otherwise the positional parameters are unchanged. The exit status is the exit status of the last command executed.