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.
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_pathes la forma de Fish para agregar directorios a tu$PATH. No intentes usarexport PATH=...como en Bash.set -gestablece una variable global para la sesión actual.set -gxademás la exporta a los procesos hijos.set -g fish_greetingsin 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
- Fish Shell vs Bash vs Zsh - mira cómo Fish se compara con los otros shells populares
- Fish Shell vs Zsh - una comparación enfocada si estás eligiendo entre estos dos
- Mejores plugins y herramientas de Fish Shell - Fisher, Tide, fzf.fish y más
- Abreviaturas vs alias de Fish Shell - por qué las abreviaturas suelen ser la mejor opción
- Configurar el prompt Starship con Fish Shell - prompt cross-shell con gran aspecto
- Autocompletado y sugerencias de Fish Shell - saca el máximo provecho del sistema de completado de Fish
- Resaltado de sintaxis de Fish Shell - entiende cómo Fish resalta tus comandos
- Funciones y comandos personalizados de Fish Shell - escribe tus propias funciones de Fish
- Historial y persistencia de Fish Shell - gestiona y personaliza tu historial de comandos
- Temas y prompts de Fish Shell - compara Tide, Starship, Pure y Hydro
- NVM con Fish Shell - gestiona versiones de Node.js en Fish
- Guía de Oh My Fish - framework alternativo de plugins para Fish
- Fish Shell en macOS - instala y configura Fish en Mac
- Zoxide: navegación más inteligente en la terminal - funciona genial con Fish también