Next: Arrays, Previous: Shell Arithmetic, Up: Bash Features [Contents][Index]
Aliases allow a string to be substituted for a word when it is used
as the first word of a simple command.
The shell maintains a list of aliases that may be set and unset with
the alias
and unalias
builtin commands.
The first word of each simple command, if unquoted, is checked to see
if it has an alias.
If so, that word is replaced by the text of the alias.
The characters ‘/’, ‘$’, ‘`’, ‘=’ and any of the
shell metacharacters or quoting characters listed above may not appear
in an alias name.
The replacement text may contain any valid
shell input, including shell metacharacters.
The first word of the replacement text is tested for
aliases, but a word that is identical to an alias being expanded
is not expanded a second time.
This means that one may alias ls
to "ls -F"
,
for instance, and Bash does not try to recursively expand the
replacement text.
If the last character of the alias value is a
blank
, then the next command word following the
alias is also checked for alias expansion.
Aliases are created and listed with the alias
command, and removed with the unalias
command.
There is no mechanism for using arguments in the replacement text,
as in csh
.
If arguments are needed, use a shell function
(see Shell Functions).
Aliases are not expanded when the shell is not interactive,
unless the expand_aliases
shell option is set using
shopt
(see The Shopt Builtin).
The rules concerning the definition and use of aliases are
somewhat confusing. Bash
always reads at least one complete line of input,
and all lines that make up a compound command,
before executing any of the commands on that line or the compound command.
Aliases are expanded when a
command is read, not when it is executed. Therefore, an
alias definition appearing on the same line as another
command does not take effect until the next line of input is read.
The commands following the alias definition
on that line are not affected by the new alias.
This behavior is also an issue when functions are executed.
Aliases are expanded when a function definition is read,
not when the function is executed, because a function definition
is itself a command. As a consequence, aliases
defined in a function are not available until after that
function is executed. To be safe, always put
alias definitions on a separate line, and do not use alias
in compound commands.
For almost every purpose, shell functions are preferred over aliases.
Next: Arrays, Previous: Shell Arithmetic, Up: Bash Features [Contents][Index]