What is the terminal?

The terminal is a program that provides a window where you can interact with the command line.

It’s essentially the “container” that displays text and accepts keyboard input.

It handles things like displaying characters, managing window resizing, scrolling, and sending keystrokes.

Popular modern terminal emulators include:

  • Alacritty
  • Ghostty
  • Kitty
  • Windows Terminal (windows only)
  • iTerm2 (macOS only)
  • and many more

Each terminal emulator might have a variety of advanced and unique features.

For example, Kitty was the first terminal to use GPU-based rendering and is able to display images.


The Shell

The shell is the actual command interpreter that processes the commands you type.

It’s the program running inside the terminal that understands and executes your commands.

It handles things like parsing commands, managing environment variables, running programs, and providing features like tab completion and command history.

Popular shells include:

  • sh
  • bash
  • zsh
  • PowerShell
  • fish
  • nushell
  • and more
> While there has been a proliferation of various shell interpreters, this course will focus on **bash**, as it is the default on most Unix-like system.

sh

sh is the original Unix shell developed by Stephen R. Bourne.

It is designed to be simple and portable across different Unix-like operating systems.

It is a specification defined by the POSIX standard.


Bash

Bash is a shell interpreter first released in 1989, with the latest version (5.3) released in July 2025.

It is popular and powerful with more advanced features and quality-of-life improvements.

Bash is a superset of sh.


POSIX

The Portable Operating System Interface is a standard specified by the IEEE to ensure compatibility between different operating system. It has been evolving since 1988.


It encompasses a large number of tools, programs and operating systems behaviours such as:

  • Process creation and control
  • File system operations
  • Signals
  • Pipes
  • Utility programs
  • and more

GNU coreutils

GNU coreutils is a implementation of common Unix utilities created by Richard Stallman and the GNU project.

It aims to be POSIX-compliant, but extends tools with multiple additional features.


There are also multiple other implementations of the common Unix toolset such as:

  • Plan9
  • BSD
  • BusyBox
  • uutils
  • and more

Each of these implementations comes with its owns specifics, features and quirks that are too numerous and finicky to cover in detail.

This course does NOT aim to teach you how to write the most portable shell scripts, so we are NOT limiting ourselves to the POSIX standard.

The terminal is responsible for executing commands?

  • true
  • false