Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
The five upgrades worth knowing about are fish (a friendlier interactive shell), Starship (a prompt that shows useful context), fzf (fuzzy selection for files and command history), eza (a modern replacement for ls), and kitty (a terminal emulator with strong display and scrollback features). Each one sits in a different layer of the terminal experience, so you can adopt any of them without replacing the rest. The safest approach is to add one change at a time and keep a working path back to your previous setup.
Before you change anything
Most people who abandon a new shell or prompt do so because a small incompatibility broke something they relied on. A few precautions prevent that.
- Back up your existing configuration files. For Bash, that is usually
~/.bashrcand~/.bash_profile; for zsh,~/.zshrc. A simple copy works:cp ~/.bashrc ~/.bashrc.bak. - Try each tool from your current shell first. Type the program name in a terminal and confirm that it starts before you configure it to load automatically.
- Check the version your distribution packages. Repository versions can lag behind upstream releases, and the installation instructions on each project’s site are the authority for current install steps.
- Keep your original shell available. Before changing your login shell, confirm that the new shell’s path (shown by
command -v fish, for example) is listed in/etc/shells, and remember that your default shell can be changed back withchsh.
The five upgrades
1. fish: a friendlier interactive shell
fish describes itself in its official tutorial as “a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly.” Its interactive features, including syntax highlighting, autosuggestions from your history, and tab completions, are built in rather than added through plugins.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchThe trade-off is compatibility. fish is not a drop-in replacement for Bash or zsh. Its syntax differs in places, so a line such as export EDITOR=vim becomes set -x EDITOR vim in fish, and Bash scripts with a #!/bin/bash line will still run under Bash, not fish. Test fish by running it from your existing shell, and use it as your login shell only after your everyday commands and dotfiles work in it.
#1 Best Overall
2. Starship: a prompt that shows context
Starship is a prompt rather than a shell, and it works with several shells. Its project guide describes it as “the minimal, blazing-fast, and infinitely customizable prompt for any shell!” The “blazing-fast” wording is the project’s own description, not an independent benchmark.
Starship runs small commands to gather context, such as the current Git branch and status, and displays the results in the prompt. To enable it, add the initialization line for your shell to its startup file:
- Bash:
eval "$(starship init bash)"at the end of~/.bashrc - zsh:
eval "$(starship init zsh)"at the end of~/.zshrc - fish:
starship init fish | sourceat the end of~/.config/fish/config.fish
Starship’s guide notes that icon glyphs require a Nerd Font. Treat that as optional visual polish: without one, the prompt still works, but some symbols may appear as boxes or missing characters. Configuration lives in ~/.config/starship.toml, and modules can be turned on or off there.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches3. fzf: fuzzy selection for files and history
fzf is a general-purpose fuzzy finder. It reads lines of text from any source and lets you narrow them interactively, which is why it is useful well beyond file picking. Its README documents shell integration for Bash, zsh, and fish, which typically adds key bindings for searching command history and selecting files and directories. In the default bindings, Ctrl-R searches history, Ctrl-T inserts a selected file path, and Alt-C changes into a selected directory.
fzf also supports preview windows, for example fzf --preview 'head -n 50 {}'. Previews are meant for files, so pair them with file-oriented commands. A general-purpose selector can receive non-file input, and a preview command that assumes a file path will misbehave on such lines.
4. eza: a readable ls replacement
eza is a maintained replacement for ls that adds color, a long listing format, and Git status in directory views. Common forms include eza -l for a long listing and eza -l --git to show Git status for each entry.
Rank #4
Availability depends on your distribution. Look for an eza package in your package manager first, and follow the installation documentation on the eza project site if your release does not carry it or carries an old version. Do not assume one install command works on every system. If you alias ls to eza, keep the original available under another name so scripts that expect ls output are not affected.
Free tools Windows power users keep installed
One-click scans. No signup required.
5. kitty: terminal display and scrollback
A terminal emulator is the window that hosts your shell, and changing it is optional. kitty’s overview documentation says it is “designed from the ground up to support all modern terminal features, such as Unicode, true color, bold/italic fonts, text formatting, etc.” Its documented features include configurable fonts, keyboard controls, sessions, and scrollback that you can search.
Best Value
For many people the practical gains are modest and specific: a font size that suits your screen, a monospace typeface you can read for hours, and the ability to search earlier output. Font size is set in kitty.conf with a line such as font_size 11.0. kitty is one example, not the only choice. Your existing terminal may already offer the same settings under its preferences menu.
Choosing the layers that fit your setup
The five upgrades do different jobs, and they can be combined or skipped independently. The table compares them on the criteria that usually decide whether a change is worth keeping.
| Upgrade | Layer | Compatibility with existing scripts and dotfiles | Font or glyph needs | Reversing the change |
|---|---|---|---|---|
| fish | Shell | Syntax differs from Bash and zsh; existing scripts and dotfiles may need changes | None stated in the official tutorial | Restore your previous login shell with chsh |
| Starship | Prompt, works with Bash, fish, and zsh | Runs alongside your shell; no syntax changes | Nerd Font recommended for icons, not required to function | Remove the init line from your startup file |
| fzf | Key bindings and selection tool | Adds shell integration; existing commands are unchanged | None stated in its README | Remove the integration line from your startup file |
| eza | Command replacing ls |
Output format differs from ls; scripts parsing ls output may break |
Not stated in its documentation | Remove the alias or call ls directly |
| kitty | Terminal emulator | Independent of your shell and scripts | Font choice affects display; glyph coverage depends on the font | Reopen your previous terminal application |
When something feels slow or broken
- A prompt segment shows “Executing command … timed out.” Starship stops commands that exceed its configurable time limit and reports them as timed out. Run
starship timingsto see which module is slow, then disable or adjust that module instarship.toml. - Icons appear as boxes. Install a Nerd Font and select it in your terminal’s font settings, or remove the icon symbols from your Starship configuration.
- A script fails after switching shells. Run it explicitly with its interpreter, such as
bash script.sh, and compare the fish syntax differences before editing it. - Starship will not run on an older Linux distribution. The Starship FAQ addresses older versions of glibc, so check it before troubleshooting your configuration.
- A new program fails to start after an install. Confirm the package version your distribution provides and compare it with the project’s installation instructions.
Start with the change that addresses your most frequent frustration. For many readers that is either the prompt or history search, and each can be tested in minutes without touching your login shell.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

