Last Updated on May 22, 2022
This series offers a gentle introduction to Linux for newcomers.
The desktop environment with its bundle of programs sharing a common graphical user interface (GUI) remains a firm favorite with users. That’s unsurprising as a good desktop environment makes computing fun and simple. The graphical desktop environment has become so ingrained in almost everyone’s computer activities that it might seem the shell would fade away. Yet there’s still an important role to play for the shell and accompanying terminal-based software.
What’s a shell? What’s a terminal? The shell is a program that takes commands from the keyboard and gives them to the operating system to perform. On Ubuntu, the default shell is bash (which stands for Bourne Again SHell). The terminal is really a program called a terminal emulator. This is software that lets you interact with the shell.
There are many reasons why it’s useful to use bash and the command-line. For example, command-line skills help with building repeatable data processes, the command-line makes working with text files easier, it uses less resources, can improve productivity and workflow, it’s great for scripting, and command-line skills are useful for cloud services.
As we’re using Ubuntu for this guide, we can click on the grid and start typing ‘terminal’ into the search box. As soon as we type the letter t, we can see the terminal icon. Click the icon. This launches the gnome-terminal program.
We will use a different program called hyper for our screenshots as they look more visually attractive. But the pre-installed gnome-terminal offers all the functionality you’ll need.
When you start Terminal, the application starts the default shell. In Ubuntu that’s bash, but there are other shells available.
The shell shows your username, hostname, and current working directory.
sde@ganges tells us that we’re logged into the shell with the username sde, on a host machine named ganges. Our working directory is /usr/bin.
A shell knows 4 types of commands.
Builtins: Builtin commands are contained within the shell itself. They provide functionality which is difficult or impossible to obtain with separate utilities. Most builtins manipulate the shell state.
Aliases: Nicknames for a command with some options. They are defined in the shell’s initialization file (~/.bashrc for bash).
External commands: They are independent of the shell. Like other programs, the shell executes external programs by looking them up in the executable search path. The PATH environment variable contains a colon-separated list of directories to search for programs.
Functions: They are snippets of shell code given a name. Like aliases, they are defined in the shell’s initialization file.
As this article is targeted at beginners to Linux, we’ll focus on builtins, aliases, and external commands. Let’s look at each in turn.
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: