This is a complete terminal setup guide. Start with nothing, end with a modern development environment — shell, prompt, file tools, git tools, and Docker management. Every tool listed here is on clihub with install commands.
Total setup time: about 30 minutes.
Step 1: Pick a Terminal Emulator
Your terminal emulator is the app that runs everything else. The default Terminal.app on macOS or GNOME Terminal on Linux works, but modern options are faster and more configurable.
Quick picks:
- macOS: Ghostty (fast, native) or iTerm2 (feature-rich, stable)
- Linux: Kitty or Alacritty
- Windows: Windows Terminal
For a detailed comparison, see Best Terminal Emulators for Developers.
Step 2: Install a Package Manager
You need a package manager to install everything else.
macOS — Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Linux — your distro's package manager (apt, dnf, pacman) plus optionally Homebrew for cross-platform consistency.
Windows — winget (built in) or Scoop:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
Step 3: Pick a Shell
Your shell is the command interpreter. The three real options in 2026:
Fish — Works Out of the Box
Autosuggestions, syntax highlighting, smart tab completions — all built in, zero configuration. The tradeoff: Fish uses its own syntax that's not POSIX-compatible, so some scripts need adjusting.
brew install fish
# Set as default shell:
echo $(which fish) | sudo tee -a /etc/shells
chsh -s $(which fish)
Zsh — The Standard
Default on macOS since Catalina. POSIX-compatible, massive plugin ecosystem via frameworks like Oh My Zsh. Requires more setup to get the same features Fish has by default.
# Already installed on macOS. On Linux:
sudo apt install zsh
# Add autosuggestions (Fish-like):
brew install zsh-autosuggestions zsh-syntax-highlighting
Bash — Universal
Available everywhere. If you write scripts that run on servers, CI, and containers, Bash is the guaranteed-available option. Functional but barebones for interactive use.
Recommendation: Fish if you want the least configuration. Zsh if you need POSIX compatibility and want to customize. Bash for servers and scripts.
Step 4: Set Up Your Prompt
Starship — Cross-Shell Prompt
Works with Fish, Zsh, and Bash. Shows git branch, language versions (Node, Python, Rust, Go), cloud context, command duration, and exit codes. Written in Rust — renders in under 10ms.
brew install starship
Add to your shell config:
Fish (~/.config/fish/config.fish):
starship init fish | source
Zsh (~/.zshrc):
eval "$(starship init zsh)"
Customize with ~/.config/starship.toml. The defaults are good — only customize if you want to add or remove prompt segments.
Step 5: Upgrade Your Core Tools
Replace legacy Unix commands with modern alternatives. See Modern Alternatives to Classic Unix Commands for the full breakdown.
The essential five:
brew install ripgrep fd bat eza zoxide
| Install | Replaces | What it adds |
|---|---|---|
ripgrep (rg) | grep | .gitignore aware, significantly faster |
fd | find | Simpler syntax, smart defaults |
bat | cat | Syntax highlighting, line numbers |
eza | ls | Git status, icons, tree view |
zoxide (z) | cd | Learns your directories, fuzzy matching |
Set up aliases in your shell config:
alias cat="bat"
alias ls="eza"
alias find="fd"
alias grep="rg"
Add zoxide initialization:
Fish:
zoxide init fish | source
Zsh:
eval "$(zoxide init zsh)"
Step 6: Git Tools
lazygit — Git TUI
Full terminal UI for git. Stage hunks, rebase, resolve conflicts, manage branches — all with keyboard shortcuts.
brew install lazygit
delta — Better Diffs
Syntax-highlighted diffs with line numbers. Set it as your git pager:
brew install git-delta
Add to ~/.gitconfig:
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
gh — GitHub CLI
Create PRs, review issues, manage repos from the terminal.
brew install gh
gh auth login
For more git tools, see Best Git CLI Tools.
Step 7: Terminal Multiplexer
A multiplexer lets you split panes, manage windows, and keep sessions alive when you disconnect.
tmux — The Standard
brew install tmux
Essential keybindings (prefix is Ctrl+b by default):
prefix + %— vertical splitprefix + "— horizontal splitprefix + c— new windowprefix + d— detach (session stays alive)tmux attach— reattach to session
zellij — Easier Alternative
brew install zellij
Zellij shows keybindings in a status bar, so you don't need to memorize anything. Lower learning curve than tmux, with floating panes and built-in layouts.
Recommendation: zellij if you're new to multiplexers. tmux if you want the ecosystem (plugins, tpm, deep customization).
Step 8: Docker Tools (Optional)
If you work with containers:
lazydocker — Docker TUI
brew install lazydocker
See containers, images, volumes, logs, and stats in one view. Replaces docker ps, docker logs, docker stats — all at once. For more Docker tools, see Best Docker CLI Tools.
Step 9: Data Tools (Optional)
jq — JSON Processing
brew install jq
Pipe any API response into jq to filter and format. Essential if you work with REST APIs. See Best JSON CLI Tools for alternatives.
tldr — Practical Man Pages
brew install tldr
Community examples instead of full manuals. tldr tar gives you the 5 commands you actually need.
Step 10: AI Tools (Optional)
If you want AI assistance in your terminal:
npm install -g @anthropic-ai/claude-code # Claude Code
pip install aider-chat # aider (open source)
gh extension install github/gh-copilot # Copilot CLI
See Best AI CLI Tools for a full comparison with pricing.
The Complete Install Script
Here's everything from this guide in one block. Run what you need:
# Package manager (macOS)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Shell & prompt
brew install fish starship
# Core tools
brew install ripgrep fd bat eza zoxide
# Git tools
brew install lazygit git-delta gh
# Multiplexer (pick one)
brew install tmux
# brew install zellij
# Docker tools
brew install lazydocker
# Data tools
brew install jq tldr
Browse all these tools on clihub to see descriptions, GitHub stats, and alternative install methods.
FAQ
How long does this setup take?
About 30 minutes for the full setup, including Homebrew install time. The core tools (step 5) install in under a minute. Most of the time goes into configuring your shell and prompt to your taste.
Can I use this guide on Linux?
Yes. Replace brew install with your distro's package manager (apt install, dnf install, pacman -S). Most tools listed here are in standard Linux repositories. The shell config and aliases are identical.
Do I need all of these tools?
No. Start with steps 1-5 (terminal, package manager, shell, prompt, core tools). Add the rest as you need them. The core tools alone make a significant difference in daily workflow.
All tools in this guide are on clihub — the directory for discovering command line tools.