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

🐟 Install Latest fish on Ubuntu

The friendly interactive shell

Latest version: 4.8.1 · updated 2026-08-11
SourceVersion
deb.griffo.io4.8.1 ✅
Official Ubuntu4.2.1 🛑
← Back to home

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

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 Ubuntu: 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 Ubuntu 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 Ubuntu repositories?

Yes, but the official Ubuntu archive ships fish 4.2.1, while this repository serves fish 4.8.1 — rebuilt within hours of each upstream release.

How do I install the latest fish on Ubuntu?

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 Ubuntu releases are supported?

Ubuntu 22.04 Jammy, 24.04 Noble, 25.10 Questing and 26.04 Resolute.