Starship and Oh My Posh are the two dominant cross-shell prompt engines of 2025β2026, both written in compiled languages (Rust and Go respectively) that render beautifully styled, information-rich prompts across bash, zsh, fish, PowerShell, Nushell, and more from a single configuration file. They solve the problem of maintaining separate prompt setups per shell and per OS β write one config, carry it everywhere. The key insight practitioners need upfront: both tools require a Nerd Font installed in the terminal emulator to render glyphs correctly, and the primary performance lever for both is disabling or limiting modules you don't need rather than changing the renderer.
What This Cheat Sheet Covers
This topic spans 16 focused tables and 189 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Starship Installation by Shell and OS
Installing Starship takes two steps: getting the binary onto the system, then adding a one-line init call to the shell's startup file. The init command differs slightly per shell; getting it into the right file is the most common stumbling block.
| Command | Example | Description |
|---|---|---|
curl -sS | sh | β’ Universal install script β’ places the binary in /usr/local/bin. Also available via brew install starship. | |
winget install --id Starship.Starshipscoop install starshipchoco install starship | β’ Three package-manager options on Windows β’ winget is the most widely available | |
cargo install starship --locked | β’ Cross-platform installation from source via Rust's package registry β’ requires Rust toolchain | |
eval "$(starship init bash)" | β’ Add to ~/.bashrc (or ~/.bash_profile)β’ runs the init at each new bash session | |
eval "$(starship init zsh)" | Add as last line of ~/.zshrc. | |
starship init fish | source | β’ Add to ~/.config/fish/config.fishβ’ fish uses pipe-to-source instead of eval |