โšก 43 developer tools, always updated โ€” new upstream releases land in apt within hours. Join the Discord

๐Ÿ“… From , the apt mirror will require a subscription. See pricing ยท ๐Ÿ†“ There is an always-free mirror

๐ŸŸ Install Latest fish on Debian

The friendly interactive shell

Latest version: 4.8.1 ยท updated 2026-08-11
SourceVersion
deb.griffo.io4.8.1 โœ…
Official Debian4.0.2 ๐Ÿ›‘
โ† Back to home
๐Ÿ“Œ Installing on a specific release? Debian 12 (bookworm) ยท Debian 13 (trixie) ยท Debian 14 (forky) ยท Debian Sid

What is fish?

fish is a smart and user-friendly command line shell. It suggests commands as you type from your history and completions, highlights syntax as you write it, generates tab completions from your installed man pages, and drops the arcane quoting rules other shells inherited. All of it works out of the box โ€” there is no configuration to write before fish is pleasant to use.

๐Ÿš€ Why Latest Versions Matter: fish 4 was rewritten in Rust and has been moving quickly ever since: faster startup, better completions, and a steady stream of interactive polish. The version frozen in the archive predates much of it.

โšก Key Features of fish

๐Ÿ’ก Autosuggestions

As you type, fish suggests the rest of the command from your history and completions. Press โ†’ to accept it.

๐ŸŽจ Syntax Highlighting

Commands are coloured as you write them, so a typo or an unclosed quote is obvious before you press Enter.

โŒจ๏ธ Completions From Man Pages

fish parses your installed man pages to generate tab completions, so even obscure tools complete their options.

๐Ÿง  Sane Scripting

No word splitting surprises, no [[ ]] versus [ ], and real lists. Scripts read the way they behave.

๐Ÿ” Searchable History

Type a prefix and press โ†‘ to walk only the matching commands, with substring search built in.

๐Ÿ› ๏ธ Configurable In Your Browser

fish_config opens a UI for prompts, colours, functions and bindings โ€” no dotfile archaeology required.

๐Ÿš€ Always ahead of the official archives: Debian and Ubuntu freeze package versions when a release ships โ€” this repository publishes new upstream releases typically within hours. A simple apt upgrade keeps you on the latest version.

๐Ÿ“ฆ Installation from deb.griffo.io

Run the commands

Step 1: Add Repository

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

๐Ÿ†“ There is an always-free mirror. deb-free.griffo.io serves packages free forever โ€” no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries Ghostty, Oh My Posh and Zed; fish is not one of them, so the repository above is the only way to get it today โ€” ask and it can be enrolled.

How the free mirror works โ†’

Step 2: Install fish

# Install latest fish
sudo apt install fish

# Verify installation
fish --version
# Install latest fish
apt install fish

# Verify installation
fish --version

Step 3: Make fish Your Shell

# Make fish your login shell โ€” the package already registered it in /etc/shells
chsh -s /usr/bin/fish

# Or just start it for this session
exec fish

# Tweak the prompt, colours and key bindings
fish_config

๐ŸŽฏ Basic Usage Examples

Everyday interactive use:

# Accept the greyed-out autosuggestion
โ†’   # or Ctrl-F

# Search history for every command starting with git
gitโ†‘

# Jump to a directory without typing cd
/etc/apt

# Open the browser-based configuration
fish_config

Scripting without the footguns:

# Lists are real lists โ€” no word splitting
set files *.txt; echo (count $files) files

# Command substitution needs no backticks
echo "today is "(date +%A)

# Conditionals read as English
if test -f /etc/os-release; echo found; end

# Loop over a list
for f in *.md; echo processing $f; end

Making it yours:

# Define a function and save it for next time
function ll; ls -lh $argv; end; funcsave ll

# Abbreviations expand as you type, unlike aliases
abbr -a gco git checkout

# Add to PATH permanently, without editing a dotfile
fish_add_path ~/.local/bin

# Set a universal variable, shared by every fish session
set -U EDITOR nvim

๐Ÿ”ง Works Well With

fish is a first-class citizen for the modern terminal toolchain:

  • starship: cross-shell prompt with native fish support
  • zoxide: zoxide init fish and jump to directories by frecency
  • fzf: ships fish key bindings for history and file search
  • atuin: replaces fish's history with a searchable, synced database
  • Oh My Posh: another prompt engine with a fish initialiser

๐Ÿš€ Why Choose deb.griffo.io?

๐Ÿ“Š Repository Comparison:
  • Official Debian: available, but frozen at the version that shipped with the release
  • Manual Installation: requires a Rust toolchain and CMake, or hand-managing a binary
  • deb.griffo.io: latest version with automatic updates

๐Ÿ“ฆ Package Build Repository

The Debian packages are automatically built and maintained in this GitHub repository:

๐Ÿ”— Related Packages

Also available from deb.griffo.io:

๐ŸŽฏ Perfect for: anyone who wants a shell that is helpful by default, developers tired of configuring completions and prompts by hand, and people who write shell scripts often enough to resent POSIX quoting rules.

๐Ÿ’ Support This Project

If this repository saves you time and effort, please consider supporting it!

โญ Star on GitHub ๐Ÿฆ Share on Twitter

Just after the command? See apt install fish โ€” one page covering Debian and Ubuntu.

๐Ÿ“ฆ Recent releases from this repository

๐Ÿ“š Release-specific install guides

โ“ Frequently asked questions

Is fish in the official Debian repositories?

Yes, but the official Debian archive ships fish 4.0.2, while this repository serves fish 4.8.1 โ€” rebuilt within hours of each upstream release.

How do I install the latest fish on Debian?

Add the deb.griffo.io repository once using the instructions above, then run: sudo apt install fish. New releases arrive through the normal sudo apt upgrade.

Are the packages signed and how are they built?

Every package is signed with the repository's GPG key (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) and built from upstream releases in public GitHub packaging repositories that anyone can inspect.

Which Debian releases are supported?

Debian 12 Bookworm, Debian 13 Trixie, Forky and Sid.