---
title: "Cómo Instalar Fish Shell en Ubuntu (Última Versión 4)"
description: "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."
date: 2026-02-24
categories: ["vps"]
tags: ["fish-shell"]
---

import Notice from "@components/widgets/Notice.astro";
import Accordion from "@components/widgets/Accordion.astro";

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](/es/fish-shell-macos-configuracion/) 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:

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

Verifica que se instaló correctamente:

```bash
fish --version
```

Deberías ver algo como `fish, version 4.5.0`.

<Notice type="info" title="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.
</Notice>

## Probar Fish sin cambiar tu shell predeterminado

No tienes que comprometerte de inmediato. Solo escribe:

```bash
fish
```

Esto te pone en una sesión de Fish. Obtienes [autosugerencias](/es/fish-shell-autocompletado-sugerencias/), [resaltado de sintaxis](/es/fish-shell-resaltado-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:

```bash
which fish
```

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

```bash
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:

```bash
chsh -s /usr/bin/bash
```

<Notice type="warning" title="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.
</Notice>

## 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:

```fish
# ~/.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:

```fish
# ~/.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](/es/fish-shell-abreviaturas-vs-alias/). 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](/es/nvm-fish-shell/).

**Fisher** es la opción más popular:

```fish
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:

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

Tengo una guía completa sobre [los mejores plugins y herramientas para Fish Shell](/es/mejores-plugins-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:

```fish
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](/es/fish-shell-configurar-starship/). Si has usado Starship con Zsh antes (como en mi [guía de Starship y Ghostty](/starship-ghostty-terminal/)), 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](/es/fish-shell-temas-prompts/).

## 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](/es/fish-shell-historial-persistencia/).

**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

<Accordion label="Fish no aparece en /etc/shells" group="issues" expanded="true">
Si `chsh` se queja, puede que necesites agregar Fish a los shells permitidos manualmente:

```bash
echo /usr/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
```
</Accordion>

<Accordion label="Los scripts de Bash no funcionan en Fish" group="issues">
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.
</Accordion>

<Accordion label="Faltan variables de entorno de .bashrc" group="issues">
Fish no lee `.bashrc` ni `.bash_profile`. Necesitas establecer tus variables de entorno en `~/.config/fish/config.fish` usando `set -gx`:

```fish
set -gx JAVA_HOME /usr/lib/jvm/java-21
set -gx GOPATH ~/go
fish_add_path $GOPATH/bin
```
</Accordion>

## Qué hacer a continuación

- [Fish Shell vs Bash vs Zsh](/es/fish-shell-vs-bash-vs-zsh-comparacion/) - mira cómo Fish se compara con los otros shells populares
- [Fish Shell vs Zsh](/es/fish-shell-vs-zsh-comparacion/) - una comparación enfocada si estás eligiendo entre estos dos
- [Mejores plugins y herramientas de Fish Shell](/es/mejores-plugins-fish-shell/) - Fisher, Tide, fzf.fish y más
- [Abreviaturas vs alias de Fish Shell](/es/fish-shell-abreviaturas-vs-alias/) - por qué las abreviaturas suelen ser la mejor opción
- [Configurar el prompt Starship con Fish Shell](/es/fish-shell-configurar-starship/) - prompt cross-shell con gran aspecto
- [Autocompletado y sugerencias de Fish Shell](/es/fish-shell-autocompletado-sugerencias/) - saca el máximo provecho del sistema de completado de Fish
- [Resaltado de sintaxis de Fish Shell](/es/fish-shell-resaltado-sintaxis/) - entiende cómo Fish resalta tus comandos
- [Funciones y comandos personalizados de Fish Shell](/es/fish-shell-funciones-comandos-personalizados/) - escribe tus propias funciones de Fish
- [Historial y persistencia de Fish Shell](/es/fish-shell-historial-persistencia/) - gestiona y personaliza tu historial de comandos
- [Temas y prompts de Fish Shell](/es/fish-shell-temas-prompts/) - compara Tide, Starship, Pure y Hydro
- [NVM con Fish Shell](/es/nvm-fish-shell/) - gestiona versiones de Node.js en Fish
- [Guía de Oh My Fish](/es/oh-my-fish-instalar-temas-plugins/) - framework alternativo de plugins para Fish
- [Fish Shell en macOS](/es/fish-shell-macos-configuracion/) - instala y configura Fish en Mac
- [Zoxide: navegación más inteligente en la terminal](/zoxide/) - funciona genial con Fish también