Introduction To The Bash Shell

Sharing is caring 🙂

Bash, short for the Bourne Again SHell, is a Unix shell and command-line interpreter. It is widely used as the default shell on Linux and macOS, as well as on other Unix-based systems. A shell is a command-line interface that allows users to interact with the operating system. It allows you to enter commands, run programs, and perform various operations on the system. The Bash shell is one of the most popular shells in use today, due to its flexibility and powerful features.

Bash is not just a simple command line interface, it provides scripting capabilities as well. Bash scripting allows you to automate repetitive tasks, perform more complex operations, and even write entire programs. This makes Bash a powerful tool for system administrators, developers, and other power users. Bash scripts can be used to perform a wide range of tasks, such as monitoring system performance, automating backups, or even launching entire software systems.

Additionally, Bash is widely supported and widely available. It is included with virtually all Linux distributions, as well as with macOS. Whether you’re working on a powerful server or a simple Raspberry Pi, you can be sure that Bash will be there to help you get things done.

In summary, Bash is a powerful and widely-used shell and command-line interpreter. It provides users with an efficient way to interact with the operating system, and powerful scripting capabilities that can be used to automate repetitive tasks and perform more complex operations.

Understanding the Terminal and Basic Commands

The terminal, also known as the command line or command prompt, is the interface through which you interact with the Bash shell. This is where you enter commands to perform various tasks on your system. The terminal is typically accessed through a terminal emulator, which is a program that allows you to access the terminal from a graphical user interface (GUI).

To open the terminal on a Linux or macOS system, you can typically find it in the applications menu or by searching for “terminal” or “bash.” Once the terminal is open, you will see a command prompt indicating that the shell is ready to accept commands. The command prompt typically includes the current user’s name, the system’s hostname, and the current working directory.

There are many basic commands that you can use to interact with the Bash shell and your system. Here are a few examples:

  • ls: Lists the files and directories in the current directory.
  • cd: Changes the current working directory.
  • mkdir: Creates a new directory.
  • touch: Creates a new file or updates the timestamp of an existing file.
  • rm: Removes a file or directory.
  • echo: Prints the text that you provide to the terminal.
  • pwd: Prints the current working directory.

These commands are just the tip of the iceberg when it comes to working with the Bash shell. As you become more familiar with the terminal and the Bash shell, you’ll learn more commands and develop more advanced skills for interacting with your system.

When you are learning the basic commands, it’s a good idea to use the --help or -h flag. This flag will give you more details and examples of how the commands are being used.

Also, it’s important to note that while the commands are the same on most linux systems, the options and flags to be used with the command may vary, so it’s worth to check the manual of a command before using it.

Environmental Variables

An environmental variable is a value that can be passed to the shell and to programs invoked by the shell, which can be used to configure the system or affect the behavior of certain commands.

In Bash, environmental variables are represented by a key-value pair, where the key is the variable’s name, and the value is the value it holds. Environmental variables are typically set in the shell, and can be accessed and modified by both the shell and any programs that are invoked by the shell.

Here are some examples of how to set and access environmental variables in Bash:

  • To set an environmental variable, you use the export command followed by the variable name and the value you want to assign to it. For example:
export FOO="bar"
  • To access the value of an environmental variable, you can use the $ operator followed by the variable name. For example:
echo $FOO 
  • To see all the environmental variables you can use the printenv command or env
  • To remove or unset an environmental variable use unset command followed by the variable name.
unset FOO

There are a number of predefined environmental variables that are set by the system, such as PATH, HOME, and SHELL. These variables can be used to configure the system and affect the behavior of certain commands. For example, PATH is used to specify the directories in which the shell should look for executables, HOME is used to specify the user’s home directory, and SHELL is used to specify the path to the user’s shell.

Additionally, you can use environmental variables in your scripts. This allows you to make your scripts more configurable and easier to maintain. You can use environmental variables to store important data or configuration settings that multiple parts of your script can access, or to pass data from one script to another.

Be aware that environmental variables are only accessible for the current user and session, if you want to make them permanent and available to all sessions, you will have to export them on the profile files such as .bashrc or .bash_profile.

Command Line Editing and History

When working with the Bash shell, it’s often useful to be able to edit previous commands, whether to correct a typo or to reuse a command with slight modifications. Bash provides several features that allow you to easily edit and recall previous commands.

Command Line Editing: Bash provides several key bindings that you can use to edit the command line. By default, these include:

  • The left and right arrow keys, which can be used to move the cursor through the command line.
  • The up and down arrow keys, which can be used to recall previous commands.
  • The home and end keys, which can be used to move to the beginning and end of the command line.
  • The backspace and delete keys, which can be used to delete characters.
  • The tab key, which can be used to autocomplete commands and file paths.

Additionally, there are some powerful command-line editing options you can use such as vi mode, this mode allows you to use the common vi editor commands to navigate and edit the command line.

Command Line History: Another important feature of the Bash shell is the command history. This feature allows you to recall previously-entered commands, so you don’t have to retype them. By default, the shell keeps a record of the last 500 commands that you’ve entered, and you can recall these commands using the up and down arrow keys.

You can also recall commands using the history command, which will list the last 500 commands and their corresponding numbers, you can execute a command from the history by prefixing it with an exclamation mark and the command number, for example !123

Additionally, you can use command line history with search functionality, by typing ctrl + r you will enter the reverse search mode, in which you can type any part of the command you are looking for and the shell will suggest the command that best matches.

You can customize the size of the command history and the history file by modifying the settings in the .bashrc file. By making use of these features, you can be more productive and efficient when working with the Bash shell, you’ll save time and avoid typos and mistakes.


This tutorial taught you the basics of the Bash shell and how to use it to interact with your Linux or macOS system. You’ve learned about the terminal and basic commands for navigating the file system, working with files, and managing environmental variables. You’ve also learned about advanced features such as command line editing, command line history, and scripting capabilities.

As you continue to work with the Bash shell, you’ll find that it is a powerful tool that can help you automate repetitive tasks, perform more complex operations, and even write entire programs. You’ll also find that there are many resources available to help you learn more, including books, online tutorials, and community support.

In order to become proficient with Bash it’s important to practice and apply the concepts learned, play around with different commands and options and try to solve real-world problems. With time, patience, and practice, you’ll be able to take full advantage of the power of the Bash shell.

Sharing is caring 🙂