
650
|
Chapter 6: The Bash Shell and Korn Shell
This is the Title of the Book, eMatter Edition
Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.
Command Execution
When you type a command to Bash or ksh93, they look in the following places
until they find a match:
1. Keywords such as if and for.
2. Aliases. You can’t define an alias whose name is a shell keyword, but you can
define an alias that expands to a keyword, e.g., alias aslongas=while. (Bash,
when not in POSIX mode, does allow you to define an alias for a shell
keyword.)
3. Special built-ins like break and continue. The list of POSIX special built-ins is
. (dot), :, break, continue, eval, exec, exit, export, readonly, return, set,
shift, times, trap, and unset. The Korn shell adds alias, login, typeset, and
unalias, while Bash adds source.
4. Functions. When not in POSIX mode, Bash finds functions before built-in
commands.
5. Nonspecial built-ins like cd and test.
6. Scripts and executable programs, for which the shell searches in the directo-
ries listed in the PATH environment variable.
The distinction between “special” built-in commands and nonspecial ones comes
from POSIX. This distinction, combined with the command command, makes it
possible to write functions that override shell built-ins, such as cd. For example:
cd ( ) { Shell function, found before built-in cd
command cd "$@" Use real cd to change directory
echo now in ...