Cómo Instalar Fish Shell en Ubuntu (Última Versión 4)

Guía paso a paso para instalar la última versión de Fish Shell 4.x en Ubuntu desde el PPA oficial, con configuración inicial y consejos para empezar.

Cómo Instalar Fish Shell en Ubuntu (Última Versión 4)

Ubuntu viene con Bash por defecto, y la versión de Fish en los repositorios de Ubuntu suele estar desactualizada. Al momento de escribir esto, la última versión de Fish es 4.5.0 (lanzada el 17 de febrero de 2026) mientras que los repos de Ubuntu pueden seguir teniendo una versión 3.x. El PPA oficial de Fish te da la versión actual.

Aquí te explico cómo instalar y ejecutar Fish 4.x en Ubuntu. Si estás en Mac, mira mi guía de configuración de Fish Shell en macOS en su lugar.

Instalar Fish desde el PPA oficial

El equipo de Fish mantiene un PPA que sigue la última versión estable. Tres comandos y listo:

sudo apt-add-repository ppa:fish-shell/release-4
sudo apt update
sudo apt install fish

Verifica que se instaló correctamente:

fish --version

Deberías ver algo como fish, version 4.5.0.

Soporte de versiones de Ubuntu

El PPA de Fish soporta Ubuntu 22.04, 23.04, 23.10, 24.04 y versiones más nuevas. Si estás en una versión anterior de Ubuntu, puede que necesites compilar desde el código fuente o usar el binario independiente de la página de releases en GitHub.

Probar Fish sin cambiar tu shell predeterminado

No tienes que comprometerte de inmediato. Solo escribe:

fish

Esto te pone en una sesión de Fish. Obtienes autosugerencias, resaltado de sintaxis y completado con tab de inmediato. Pruébalo. Escribe algunos comandos. Si no te gusta, escribe exit y vuelves a Bash.

Establecer Fish como tu shell predeterminado

Cuando estés listo para dar el paso:

which fish

Esto debería devolver /usr/bin/fish. Ahora establécelo como tu shell de inicio de sesión:

chsh -s /usr/bin/fish

Cierra sesión y vuelve a iniciarla (o abre una nueva terminal). Fish es ahora tu shell predeterminado.

Para volver a Bash después:

chsh -s /usr/bin/bash

Mantén Bash instalado

No elimines Bash. Muchos scripts del sistema dependen de él, y lo vas a necesitar para ejecutar scripts de shell POSIX. Fish reemplaza tu shell interactivo, no el intérprete de scripts del sistema.

Configuración inicial

El archivo de configuración de Fish se encuentra en ~/.config/fish/config.fish. Si no existe, Fish lo crea en la primera ejecución. Aquí tienes una configuración inicial básica:

# ~/.config/fish/config.fish

# Agregar rutas personalizadas
fish_add_path ~/bin
fish_add_path ~/.local/bin

# Desactivar el mensaje de bienvenida
set -g fish_greeting

# Establecer tu editor preferido
set -gx EDITOR vim

Algunas cosas a tener en cuenta:

  • fish_add_path es la forma de Fish para agregar directorios a tu $PATH. No intentes usar export PATH=... como en Bash.
  • set -g establece una variable global para la sesión actual. set -gx además la exporta a los procesos hijos.
  • set -g fish_greeting sin valor suprime el mensaje predeterminado “Welcome to fish”.

Configuración modular con conf.d

Fish carga cada archivo .fish en ~/.config/fish/conf.d/ al iniciar. Esto es más limpio que meter todo en un solo archivo. Por ejemplo, podrías crear:

# ~/.config/fish/conf.d/aliases.fish
abbr -a gst git status
abbr -a gco git checkout
abbr -a gp git push

Cubro las abreviaturas frente a los alias en detalle en abreviaturas vs alias de Fish Shell. En resumen: las abreviaturas de Fish se expanden al comando completo antes de ejecutarse, lo cual es mejor que los alias en la mayoría de casos.

Instalar un gestor de plugins

Fish funciona perfectamente sin plugins, pero un gestor de plugins te permite agregar cosas como mejor integración con git, búsqueda con fzf, y gestión de versiones de Node.

Fisher es la opción más popular:

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

Ahora puedes instalar plugins con fisher install. Por ejemplo:

fisher install PatrickF1/fzf.fish
fisher install jorgebucaran/nvm.fish

Tengo una guía completa sobre los mejores plugins y herramientas para Fish Shell si quieres recomendaciones.

Configurar tu prompt

Fish viene con un prompt predeterminado decente, pero tienes varias opciones para personalizarlo:

Opción 1: Temas integrados. Ejecuta fish_config y se abre una ventana del navegador donde puedes elegir entre varios estilos de prompt y esquemas de colores integrados.

Opción 2: Tide. Es un prompt popular nativo de Fish con un asistente de configuración. Instálalo a través de Fisher:

fisher install IlanCosman/tide@v6

Luego ejecuta tide configure para pasar por la configuración.

Opción 3: Starship. Un prompt cross-shell escrito en Rust que funciona con Fish, Zsh, Bash y otros. Tengo una guía dedicada sobre cómo configurar Starship con Fish Shell. Si has usado Starship con Zsh antes (como en mi guía de Starship y Ghostty), la configuración con Fish es casi idéntica. Para una comparación completa de todas las opciones de prompt de Fish, mira mi guía de temas y prompts de Fish Shell.

Cosas útiles que conviene saber de entrada

Búsqueda en el historial de comandos. Presiona Ctrl+R para buscar en tu historial. Fish usa sintaxis glob por defecto, así que git*commit coincide con cualquier entrada del historial que contenga “git” seguido después de “commit”. Cubro la gestión del historial en profundidad en mi guía de historial y persistencia de Fish Shell.

Autosugerencias. Mientras escribes, Fish muestra sugerencias en gris basadas en tu historial y los completados disponibles. Presiona la tecla de flecha derecha para aceptar, o Alt+Right para aceptar una palabra a la vez.

Completado con tab. Fish genera completados a partir de las páginas man automáticamente. Prueba a escribir git checkout y presionar tab. Verás nombres de ramas, flags y más sin instalar nada adicional.

Configuración web. Ejecuta fish_config para abrir una herramienta basada en el navegador para cambiar tus colores, prompt y ver funciones definidas. Es genuinamente útil para explorar lo que está disponible.

Problemas comunes

Fish no aparece en /etc/shells

Si chsh se queja, puede que necesites agregar Fish a los shells permitidos manualmente:

echo /usr/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
Los scripts de Bash no funcionan en Fish

Eso es esperado. Fish tiene su propia sintaxis. Ejecuta scripts de Bash con bash script.sh o agrega #!/bin/bash al principio y hazlos ejecutables. Tus scripts existentes no necesitan cambiar, solo ejecútalos explícitamente con Bash.

Faltan variables de entorno de .bashrc

Fish no lee .bashrc ni .bash_profile. Necesitas establecer tus variables de entorno en ~/.config/fish/config.fish usando set -gx:

set -gx JAVA_HOME /usr/lib/jvm/java-21
set -gx GOPATH ~/go
fish_add_path $GOPATH/bin

Qué hacer a continuación