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.
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.
Popular shells include:
- sh
- bash
- zsh
- PowerShell
- fish
- nushell
- and more
sh
sh is the original Unix shell
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
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