GNU Info

Info Node: (bashref.info)Aliases

(bashref.info)Aliases


Next: Arrays Prev: Shell Arithmetic Up: Bash Features
Enter node , (file) or (file)node

Aliases
=======

   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 alias name and the replacement text may contain any valid
shell input, including shell metacharacters, with the exception that
the alias name may not contain `='.  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 space or tab character, 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, a shell function should be used
(Note: Shell Functions).

   Aliases are not expanded when the shell is not interactive, unless
the `expand_aliases' shell option is set using `shopt' (Note: Bash
Builtins).

   The rules concerning the definition and use of aliases are somewhat
confusing.  Bash always reads at least one complete line of input
before executing any of the commands on that line.  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
compound 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.


automatically generated by info2www version 1.2.2.9