Last Updated on May 22, 2022
Shell Builtins
A builtin is a command contained within the Bash tool set. They execute faster than external commands and have direct access to the shell internals.
One of the shell builtins is compgen. It lists all the shell builtins in bash when run with the -b option.
$ compgen -b
We’ve compiled a table explaining all the shell builtins in the Appendix, but here’s some that will be particularly interesting to newcomers to Linux.
. (period)
The . is a symbol that, in the context of file management, refers to the current directory. But in terms of the shell, it refers to read and execute commands from the filename argument in the current shell context.
The period lets you run commands from a directory that’s not in your PATH. PATH is an environmental variable that tells the shell which directories to search for executable files in response to commands issued by a user.
cd (change directory)
cd is one of the most important and commonly used shell builtins. It lets us change directories so that we can navigate around the filesystem. Here’s a few simple cd commands we can issue.
Let’s move from any working directory to our home directory with the command:
$ cd ~
Move up a directory with the command:
$ cd ..
To move from the current working directory to /etc type:
$ cd /etc
We can also specify local directories by removing the / character. For example, if the current directory is /usr/local we can move to /usr/local/bin with the command:
$ cd bin
Pressing the tab key will autocomplete a path. Where there’s more than one matching directory, pressing tab twice will list the available matches. For example, if our working directory is /usr/local, we can type type $ cd s
and press tab twice. This action lists the sub-directories that start with the letter s.
export
The export command exports a variable or function to the environment of all the child processes running in the current shell.
To view all exported variables on the current shell, use the -p flag.
kill
kill is a shell builtin for two reasons: it allows job IDs to be used instead of process IDs, and allows processes to be killed if the limit on processes that you can create is reached.
bg and fg
The fg command switches a job running in the background into the foreground. The bg command restarts a suspended job, and runs it in the background. If no job number is specified, then the fg or bg command acts upon the currently running job.
history
Bash provides access to the list of commands you previously issued, which is known as your command history.
This feature makes it easy to repeat commands, substitute text, manipulate arguments, and fix typos in your previous commands quickly.
alias
This command displays aliases. We’ll cover aliases on the next page.
echo
The echo command does one simple job: it prints to the output an expression or variable.
The image below shows the output of the environment variable $PATH as relayed by echo. Each of the path directories is separated by a colon.
Getting Help about the Shell Builtins
Each of the shell builtins are documented. Append --help
to the shell builtin command to learn more about them and their options. Here’s an example for the cd builtin.
$ cd --help
Pages in this article:
Page 1 – Types of Commands
Page 2 – Shell Builtins
Page 3 – Aliases
Page 4 – External Commands
Page 5 – Navigate the shell efficiently
Page 6 – Appendix – Explanation of Shell Builtins
All articles in this series:
This is for beginners? Every other word seems undefined. I can read Supreme Court briefs and medical research but not this! The most important thing unexplained is what can be accomplished with these commands. If someone is willing to talk to me to explain these things, I am willing to suggest easier explanations.
Every other word seems undefined?? I think you should read more of the guide before coming to your discourteous comment.
You’ll learn a lot from Part 11, as that shows you how to find what you can do with the commands.
Well, I have not figured out just who you all really are yet….. maybe I won’t be able to>?. But, this is the best “Everything About Linux” I have ever found, on the Internet! And I have been doing Linux in many flavors from 1994! Mostly, I go between Debian and Kubuntu, which I use because of the KDE desktop, which I really like, works great for me to do anything I need!
Wow….. I now have a place to send those I try to talk into using Linux and out of paying that expensive Microsoft tax. I bailed out of Microsoft Windows 95SE in 94′. Furthermore, I have never looked back, and I have kept my money to donate to the many parts of Linux that don’t fly the “Blue Screen Of Death” for a fortune.
Don’t go away anytime soon, I’m going to work even harder now to talk others into dumping Windoz!