What Is a Terminal?
When you open a program to type commands, you're opening a terminal. The terminal provides the window, the text display, and the input area — it's the environment where your shell runs.
Terminal vs Shell: The Key Distinction
These terms get mixed up constantly, even by experienced developers. Here's the difference:
- Terminal — The program that displays text and accepts keyboard input (the window)
- Shell — The program that interprets your commands (runs inside the terminal)
Think of it this way: the terminal is like a TV screen, and the shell is the channel playing on it. Or the terminal is a room, and the shell is the person inside you're having a conversation with. You interact through the terminal, but the shell does the actual work of understanding and executing commands.
A Brief History
The word "terminal" comes from physical hardware. Early computers filled entire rooms, and users interacted through separate devices called terminals — screens with keyboards connected to the main computer. These physical terminals are mostly gone, but we kept the name.
Today's terminals are terminal emulators — software that simulates those old hardware terminals. They provide the same text-based interface without the bulky equipment.
Modern Terminal Programs
Every operating system includes a terminal application:
macOS includes Terminal.app in the Utilities folder. Many developers prefer iTerm2, a more feature-rich alternative.
Windows offers Windows Terminal (recommended), PowerShell, and the older Command Prompt. Windows Terminal can run multiple shell types in tabs.
Linux distributions include various terminals depending on the desktop environment: GNOME Terminal, Konsole, xterm, and many others.
What the Terminal Provides
The terminal handles the visual aspects of command-line work:
- Displaying text output from commands
- Accepting keyboard input
- Managing fonts, colors, and window size
- Supporting copy/paste and scrolling
- Running the shell process
When you open a terminal, it automatically starts a shell inside it. That's why the distinction blurs — you rarely use one without the other.