Fish Shell

Friendly interactive shell -- your default shell after bootstrapping

Quick summary

Fish (Friendly Interactive SHell) is a smart, user-friendly command-line shell with features like syntax highlighting, autosuggestions, and tab completions out of the box -- no configuration required. After bootstrapping, Fish is set as your default shell (effective after re-login).

Common tasks

Basic Usage

fish

Basic Usage

chsh -s /usr/bin/fish

Configuration

nvim ~/.config/fish/config.fish

Configuration

source ~/.config/fish/config.fish

What is it?

Fish (Friendly Interactive SHell) is a smart, user-friendly command-line shell with features like syntax highlighting, autosuggestions, and tab completions out of the box -- no configuration required. After bootstrapping, Fish is set as your default shell (effective after re-login).

Basic Usage

Start Fish:

$fish

Make Fish default:

$chsh -s /usr/bin/fish

Autosuggestions: Fish shows dimmed suggestions based on your history as you type. Press → or Ctrl+F to accept the suggestion.

Tab Completions: Press Tab to complete commands, options, paths, and even git branches.

Configuration

The bootstrapper creates ~/.config/fish/config.fish with:

  • Homebrew PATH setup
  • fnm (Node.js version manager) integration
  • uv (Python package manager) shell completions
  • Atuin shell history
  • FZF fuzzy finder key bindings
  • Starship prompt
  • Useful aliases (g, ga, gc, gp, gl, gs, gd)
  • Editor set to zed --wait

Edit config manually:

$nvim ~/.config/fish/config.fish

Reload config:

$source ~/.config/fish/config.fish

Tips

Fish syntax is different from Bash. Use if ... end instead of if ... fi, and set -x VAR value instead of export VAR=value.
Run help to open the Fish web-based documentation.
Use funced to edit a function interactively, and funcsave to persist it.