O'Reilly logo

Linux in a Nutshell, 6th Edition by Robert Love, Stephen Figgins, Ellen Siever, Arnold Robbins

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Command Execution

When you type a command to Bash, it looks in the following places until it finds 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.(In non-POSIX mode, Bash 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, source, times, trap, and unset.

  4. Functions. When in non-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 directories 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 $PWD                        Other stuff we want to do
    }

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required