root terminal
Terminal Guide · for total beginners

What's a terminal?

A plain-English guide to the black-or-blue boxes that confuse everyone — on Windows, Mac, and Linux. The one big idea that clears up the confusion: the window and the shell are two different things. Once you see that, all the names stop being a maze.

cmd, PowerShell, Git Bash, pwsh, conhost, Windows Terminal, Terminal.app, iTerm2, zsh, bash, gnome-terminal, kitty — they sit in only two buckets.

Read time: ~10 minutes
Skill needed: can you press a key?
Audience: brand-new terminal users

The one idea that fixes everything

Every "terminal" is actually two pieces of software stacked on top of each other:

layer 1 — the window

The terminal (or "host")

The actual window you see on screen. It draws the text, handles your keystrokes, gives you tabs (or doesn't), lets you resize, copy, paste, change the font. It doesn't understand any commands. It just paints letters and forwards what you type.

Examples: Windows Terminal, conhost, Terminal.app, iTerm2, gnome-terminal, kitty, alacritty.

layer 2 — the shell

The shell

The program running inside the window that actually reads your commands. When you type ls, the shell is what figures out what that means and runs it. It has no window of its own — it borrows the terminal's.

Examples: cmd, PowerShell, pwsh, Git Bash, bash, zsh, fish.

Why this matters. If you ask "does my terminal have tabs?" you're asking about the window — the host. If you ask "why doesn't ls work?" you're asking about the shell. Every confused question about terminals collapses once you know which layer you're really asking about.

A useful analogy: the shell is the engine; the terminal is the car body around it. You can put the same engine in different bodies, or different engines in the same body. On Windows you can run cmd or PowerShell or Git Bash inside either conhost or Windows Terminal — nine combinations.

How to tell which one you're in

This is the question everyone asks first. Look at the title bar, the prompt, and one quick command.

1. Look at the title bar

The window title usually announces what's running inside. A few common ones:

2. Look at the prompt

The line waiting for your input is a giveaway:

If the prompt looks like…It's probably…
C:\Users\you>cmd.exe (Windows Command Prompt)
PS C:\Users\you>PowerShell (either 5.x or 7)
you@machine MINGW64 ~
$
Git Bash
you@machine:~$bash on Linux or WSL
you@MacBook ~ %zsh on macOS (Catalina and newer)
~ > or a custom onefish, or a starship/powerlevel10k theme over bash/zsh

3. Run one command to be certain

If you're still not sure, type one of these:

And to see which terminal window is hosting you, on Windows:

$env:WT_SESSION    # PowerShell — has a value only inside Windows Terminal
echo $WT_SESSION   # Git Bash / bash — same idea

If it prints a long string, you're in Windows Terminal. If it prints nothing, you're in classic conhost.

Windows: the full lineup

Windows is where the host-vs-shell distinction matters most, because Microsoft kept three of each lying around for compatibility. Here they are.

The two windows (hosts)

📽

Windows Console (conhost.exe)

classic · 1980s-era

The boxy black window that opens when you launch cmd or PowerShell from the Start menu. It's the original Windows console. Works, but minimal.

no tabs limited Unicode no transparency

🎮

Windows Terminal

modern · recommended

Microsoft's modern replacement, free in the Microsoft Store or via winget. Tabs, splits, themes, full Unicode, GPU-accelerated. Hosts cmd, PowerShell, pwsh, WSL, Git Bash — whichever you launch.

tabs splits themes emoji

Tabs question, answered. If you want tabs, you're really asking for Windows Terminal, not a particular shell. Once Windows Terminal is open, Ctrl+Shift+T opens a new tab. The shell inside each tab is whichever one you picked from the dropdown.

The shells

💻

cmd.exe

Command Prompt · legacy

The original DOS-style shell. Still works, still useful for dir, copy, batch files. Limited compared to anything modern.

Open: Win → type cmdEnter.

Windows PowerShell 5.x

built-in · blue window

The PowerShell that ships with Windows. Object-oriented pipeline, verbose Verb-Noun commands. Frozen at version 5.1 — no new features, just bug fixes.

Open: Winpowershell.

PowerShell 7 (pwsh)

modern · cross-platform

The current, actively-developed PowerShell. Same syntax, more features, runs on Windows / Mac / Linux. Installs side-by-side with 5.x.

Install: winget install Microsoft.PowerShell. Run: pwsh.

🐙

Git Bash

comes with Git for Windows

A bash shell on Windows, plus Linux-style tools (ls, grep, ssh). Lives inside its own little terminal called mintty. Many tutorials assume you have it.

Install: git-scm.com/download/win.

🐧

WSL (bash on Linux)

Windows Subsystem for Linux

A real Linux distribution running alongside Windows. Open a Windows Terminal tab labeled "Ubuntu" and you're typing into a real bash shell with a real Linux filesystem.

Install: wsl --install in an admin PowerShell.

🔥

nushell, xonsh, etc.

enthusiast shells

Modern alternatives with structured data, Python integration, prettier defaults. Worth knowing they exist; not worth learning until you've outgrown the standard ones.

Which one should you actually use?

Practical default: install Windows Terminal as the window, and use PowerShell 7 (pwsh) as the shell inside it. Add Git Bash alongside if you follow tutorials that assume Linux-style commands. That covers 95% of everything.
# Install both in one go (PowerShell, as you):
winget install Microsoft.WindowsTerminal
winget install Microsoft.PowerShell
winget install Git.Git

How to open a new tab on Windows

Tabs only exist if your host supports them. On Windows that means Windows Terminal.

In classic conhost (the old Command Prompt window), there are no tabs. The only way to get a second one is a second window: Win+R, type the shell name, Enter.

Mac: the simpler picture

macOS has one built-in terminal (Terminal.app), one popular replacement (iTerm2), and one default shell (zsh). Almost everyone has the same setup.

Terminal.app

built into macOS

Found in Applications → Utilities. Tabs (+T), splits (+D), profiles. Perfectly adequate for daily work.

tabs splits no GPU rendering

iTerm2

free upgrade · widely used

The most popular Mac terminal replacement. Hotkey window, advanced splits, tmux integration, infinite scrollback. Free from iterm2.com.

tabs hotkey window tmux

🚀

kitty, alacritty, wezterm

GPU-accelerated · cross-platform

Newer GPU-rendered terminals. Faster scrolling, smoother fonts, ligatures. Great if you spend all day in the terminal; overkill if you don't.

The Mac shell

Since Catalina (2019), zsh is the default. Before that it was bash. They're close enough that day-to-day commands (cd, ls, grep) work identically. Differences only show up in scripting and prompts.

How to open a new tab on Mac

Linux: the menagerie

Linux has the most variety because nothing is built-in — every distro picks defaults, and every user replaces them. The shell picture is the same as Mac; the terminal picture is wider.

The terminals (hosts)

📁

gnome-terminal

GNOME default

Ships with Ubuntu, Fedora Workstation, and any GNOME desktop. Tabs, profiles, transparency. The "just works" default.

📊

konsole

KDE default

Ships with KDE. Same idea as gnome-terminal but with more configuration knobs. Splits, tabs, profiles, bookmarks.

🐈

kitty / alacritty / wezterm

GPU-accelerated

Fast, modern, scriptable. Configured by text files. Popular with developers who live in terminals.

👨‍💻

xterm

the ancestor · minimalist

The original X11 terminal from 1984. Still works, still installed on most systems. Use it as a last resort when nothing else launches.

The shells

By far the most common on Linux:

How to open a new tab on Linux

Cloud terminals: DigitalOcean and friends

There's a fourth kind of terminal worth knowing about: the one your cloud provider hosts inside your browser. DigitalOcean has one. So do AWS, Azure, Google Cloud, GitHub Codespaces, Linode, Vultr, and Hetzner. They all work roughly the same way and they all share the same handful of pitfalls.

The model bends the host/shell idea a little:

Every keystroke you type travels through the network into a process on the far end. That one detail explains every quirk and limitation below.

DigitalOcean Droplet Console

The main star, since this is the one you'll meet first if you've got a droplet. To open it:

  1. Sign in to cloud.digitalocean.com.
  2. Click into your droplet.
  3. Click the Console button (top right of the droplet page) or the "Launch Droplet Console" link.
  4. A new browser tab opens with a working bash prompt on your droplet. No SSH key needed — your DigitalOcean login is the authentication.

DigitalOcean actually ships two consoles, and it's worth knowing which is which:

🌐

Droplet Console (HTML5)

modern · the default

A real terminal session over websockets. Fast-ish, supports color, mostly behaves. This is what opens by default. Good for quick fixes and inspection.

🛡

Recovery Console (VNC)

legacy · emergency only

A VNC-backed console that talks to the droplet's virtual screen, not its network. Use it when you've locked yourself out — broken firewall, bad sshd_config, full disk — and the HTML5 console can't connect either. Slow and clunky; that's fine, it's a lifeboat.

Pros and cons

ProsCons
No SSH key on this machine. Works from a borrowed laptop, a phone, an internet cafe — anywhere with a browser and your DO login. Laggy. Every keystroke is a network round-trip. Typing feels rubbery, scrolling stutters, paste can take a second to land.
Survives a broken SSH config. Forgot to allow your IP through the firewall? Bricked sshd_config? The recovery console still gets you in. Clipboard is awkward. Browsers can't grant arbitrary clipboard access to a web page; you click a paste icon, paste into a popup, hit OK. Multi-line pastes sometimes mangle the trailing newline.
Authentication is your cloud login. Same MFA you already use. No key management, no ~/.ssh/config. Some keys are stolen by the browser. Ctrl+W closes your tab. Ctrl+T opens a new browser tab. F-keys may not pass through. Ctrl+N opens a window.
Nothing to install. Zero local setup. Useful for first-time droplet bring-up before you've copied an SSH key over. No tabs, no splits, no scrollback search. The browser tab is the terminal. Want two shells side by side? Two browser tabs — and they don't share history, kill rings, or anything else.
Audit trail. The provider can log who opened a console session and when. Useful on a shared account. No file transfer, no port forwarding. No scp, no ssh -L, no sshfs. Move a file or tunnel a port — you need real SSH.
Works on a phone. Not well, but it works. Genuinely lifesaving at 2am from a hotel. Idle timeout disconnects you. Step away for ten minutes; come back to a dropped session and lost shell state.

The verdict for Claude Code

Don't run claude inside the DigitalOcean Droplet Console. The lag, the clipboard friction, the keys the browser steals, the missing tabs — every one of those gets worse over a long Claude session. And the idle timeout will drop you mid-task.

The right pattern: SSH into the droplet from a local terminal that has tabs (Windows Terminal, iTerm2, gnome-terminal). For long sessions that survive disconnects, run tmux on the server — reconnect later with tmux attach and pick up exactly where you left off.

The working pattern, for the common case:

ssh root@your.droplet.ip
tmux new -s claude      # first time
claude                  # start Claude inside the tmux session

# Disconnect any time. Reconnect later from anywhere:
ssh root@your.droplet.ip
tmux attach -t claude   # same session, same state

Now your local terminal has tabs, your remote session has persistence, and the DigitalOcean console goes back to being what it's good for: emergencies and first-time setup.

The other major cloud consoles

If you use a different provider, same model, same trade-offs. Worth recognizing the names so you know what kind of thing you're looking at:

ProviderConsole nameWorth knowing
AWSEC2 Instance Connect, Session ManagerSession Manager works without opening port 22 at all — the connection goes through AWS's control plane. Same lag and clipboard quirks as DO.
AzureCloud Shell, BastionCloud Shell drops you into a managed bash / PowerShell container, not your VM. Bastion is the per-VM console equivalent.
Google CloudCloud ShellLike Azure Cloud Shell — a managed Linux container, not the VM you're trying to reach.
GitHubCodespacesA different beast: a whole VS Code in the browser, not just a terminal. Tabs and splits work because the host is VS Code.
Linode · Vultr · Hetzner"Web Console" / "noVNC"Almost identical to DigitalOcean's recovery console. Same lifeboat use case.

What every shell shares

Whatever you end up in, these basics work the same. Day-one literacy:

GoalcmdPowerShellbash / zsh / Git Bash
Show current foldercdpwdpwd
List filesdirls or dirls
Change foldercd pathcd pathcd path
Go up one foldercd ..cd ..cd ..
Make a foldermkdir namemkdir namemkdir name
Show a file's contentstype file.txtGet-Content file.txtcat file.txt
Clear the screenclscls or clearclear or Ctrl+L
Re-run a previous commandF7arrow arrow
Stop a runaway commandCtrl+CCtrl+CCtrl+C
Exit the shellexitexitexit or Ctrl+D

The mockup, annotated

Here's what a healthy Windows Terminal session running PowerShell 7 looks like. Note the tab bar across the top, the PS prefix on the prompt, and the version line:

PowerShell — Windows Terminal — [+] [new tab]
PowerShell 7.4.1 PS C:\Users\you> $PSVersionTable.PSEdition Core PS C:\Users\you> $env:WT_SESSION 1a2b3c4d-5e6f-7890-abcd-ef1234567890 # ← means: inside Windows Terminal PS C:\Users\you>

And here's classic Command Prompt in old conhost — no tabs, no WT_SESSION:

C:\WINDOWS\system32\cmd.exe
Microsoft Windows [Version 10.0.26200] (c) Microsoft Corporation. All rights reserved. C:\Users\you> echo %WT_SESSION% %WT_SESSION% # ← literal text means: not set, not in Windows Terminal C:\Users\you>

Common confusions, resolved

"I typed ls and it said 'not recognized'"

You're in cmd, where the list command is dir. Or switch to PowerShell / Git Bash, where ls works.

"Ctrl+V doesn't paste"

You're in Git Bash (mintty) or old conhost. Use Shift+Insert, or right-click. In Windows Terminal, Ctrl+V works as you'd expect.

"Where did my window go? I can't find tabs."

You opened classic conhost, not Windows Terminal. They look almost identical at first. Check the title bar — if it says "Command Prompt" or "Windows PowerShell", you're in conhost. Install Windows Terminal to get tabs.

"I installed Windows Terminal but wt doesn't run"

That stub file at C:\Users\you\AppData\Local\Microsoft\WindowsApps\wt.exe exists for every Windows user even if Windows Terminal isn't installed. The fix is to actually install the app:

winget install Microsoft.WindowsTerminal

"PowerShell complains 'cannot be loaded because running scripts is disabled'"

The execution policy is blocking a script. The standard fix (run once, in an admin PowerShell):

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

"My commands look right but nothing prints"

You probably forgot to press Enter. Or the command genuinely produced no output (many Unix commands stay quiet on success). Try one that always prints, like echo hello, to confirm the shell is alive.

When in doubt: close the window and reopen it. PATH, environment variables, and freshly-installed tools all need a new shell to pick them up. Closing-and-reopening fixes more confused-terminal problems than any other single move.

Where to go next

You don't need any of these on day one. Reach for them when you outgrow the basics.

Bottom line — pros and cons for Claude

You've met every terminal there is. So which one should you actually run claude inside? Strip the question down and one criterion swamps the rest:

The one rule that matters most Use a terminal that has tabs. Everything else — theme, font, GPU rendering, ligatures, transparency, that cool dotfiles setup you saw on YouTube — is a distant second concern when you're using Claude Code.

Why tabs matter so much for Claude

Claude Code is a back-and-forth that often runs for many minutes at a stretch. You keep wanting a second shell open next to Claude. Three concrete patterns you'll hit on day one:

  1. The "let me peek" pattern. Claude is editing a file across ten turns. You want to cat the current state, check git status, glance at a log — without interrupting Claude. Open a second tab. Done.
  2. The "second project" pattern. You start claude in ~/projects/A. A question pops up about project B. New tab, cd ~/projects/B, fresh claude, no context-mixing.
  3. The "watch the work" pattern. Claude kicks off a build, deploy, or long script. You want to keep typing other things, or tail a log, or hit an HTTP endpoint to see how it's responding. Tabs (or splits) make that a one-keystroke move; a single window makes it a juggling act.

None of these are technically impossible without tabs — you can always open a second window. But two unrelated windows for the same task is friction. Tabs are the right shape for how Claude Code actually feels.

Windows — the verdict

TerminalTabs?Verdict for Claude
Windows Terminal
winget / Microsoft Store
✅ yes
Ctrl+Shift+T
Use this. Modern, free, hosts every shell you have. The right answer for Claude on Windows, no caveats.
VS Code integrated terminal
comes with VS Code
✅ yes Great if you live in VS Code. Tabs and editor side-by-side, so you watch Claude touch files in real time. The only downside: you're inside an editor.
Git Bash (standalone mintty)
comes with Git for Windows
❌ no OK in a pinch — but better inside Windows Terminal. Add Git Bash as a profile in WT and you get bash on Windows with tabs. Best of both.
Classic Windows Console (conhost.exe)
what opens when you launch cmd or PowerShell from Start menu, with no Windows Terminal installed
❌ no Don't. No tabs means every "let me check..." becomes a second window or an interrupted Claude. Constant friction. This is the trap most beginners fall into without noticing.
ConEmu / Cmder
third-party, legacy era
✅ yes Skip. Did the right thing in 2015. Windows Terminal has caught up and is more actively maintained now.

Mac — the verdict

TerminalTabs?Verdict for Claude
iTerm2
free, third-party
✅ yes
⌘+T, splits, hotkey window
Use this. The hotkey window alone is worth it — bind a global key, summon Claude over any app, dismiss it again.
Terminal.app
built into macOS
✅ yes Perfectly fine. If you don't want to install anything, this works. iTerm2 is just nicer.
kitty / wezterm ✅ yes Power-user upgrade. GPU-rendered, scriptable. Worth it if you live in the terminal; overkill if you just want to run Claude.
alacritty ❌ no Pair with tmux or skip. Fast, beautiful, tab-less by design. Adds friction for Claude work unless you're already a tmux person.

Linux — the verdict

TerminalTabs?Verdict for Claude
gnome-terminal / konsole
your distro's default
✅ yes
Ctrl+Shift+T
Use what shipped. The defaults are fine. Don't over-think this.
kitty / wezterm ✅ yes Power-user upgrade. GPU-rendered and scriptable. Worth the switch if you outgrow the defaults.
alacritty ❌ no Pair with tmux. Same story as on Mac — fast but tab-less.
xterm ❌ no Last resort only. Painful for a long Claude session. Fine for a one-shot command on a server you ssh'd into.
Stuck with a no-tabs terminal? Use tmux. It gives you tabs (it calls them "windows") and splits inside any terminal, even ones with no tabs of their own. Steeper learning curve than native tabs, but it works everywhere — including over SSH on a remote server, which native tabs can't do.

The single best setup, by OS

If you remember nothing else from this page:

Windows

Windows Terminal + PowerShell 7 (with a Git Bash profile alongside) + the Ctrl+Shift+T habit.

Mac

iTerm2 + zsh + a global hotkey for the iTerm hotkey window.

Linux

Whatever shipped with your distro (gnome-terminal / konsole) + your favorite shell. Upgrade to kitty or wezterm only when you outgrow the defaults.

Working on a remote droplet / VM

SSH from your local tabbed terminal (Windows Terminal / iTerm2 / gnome-terminal) into the server, then tmux on the server for sessions that survive disconnects. Save the provider's in-browser console (DigitalOcean, AWS, Azure, GCP) for emergencies — not Claude work.

Whichever path you pick, you end up in the same place: a window with tabs, a shell you trust, and claude one keystroke away.

Install Windows Terminal … or iTerm2 on Mac →

One idea, one window, one shell.

Once you know which window you're in and which shell is running inside it, every "weird terminal thing" stops being weird.

Now install Claude Code
Live
◐ Theme