Fish Shell vs Bash vs Zsh - Comparación Completa 2026

Una comparación honesta de Fish, Bash y Zsh que cubre sintaxis, rendimiento, plugins, scripting y usabilidad diaria para que puedas elegir el shell adecuado.

Fish Shell vs Bash vs Zsh - Comparación Completa 2026

He usado los tres shells para trabajo real. Bash fue mi opción predeterminada durante años porque simplemente estaba ahí. Me pasé a Zsh cuando Oh My Zsh se hizo popular, y lo usé durante bastante tiempo. Después probé Fish por curiosidad, y se convirtió en mi shell de uso diario. Cada shell tiene su personalidad, y el “correcto” depende de lo que te importa.

Esta no es una comparación teórica. Voy a repasar lo que realmente importa cuando te sientas y escribes comandos todos los días.

Resumen rápido

CaracterísticaFishBashZsh
AutosugerenciasIntegradasNo (necesita plugin)Plugin (zsh-autosuggestions)
Resaltado de sintaxisIntegradoNoPlugin (zsh-syntax-highlighting)
Completado con TabCompleto, listo para usarBásicoBueno con plugins
Compatible con POSIXNoMayormente sí
Sintaxis de scriptingPropiaPOSIX shMayormente POSIX + extensiones
Archivo de configuración~/.config/fish/config.fish~/.bashrc~/.zshrc
Predeterminado en LinuxNoGeneralmente síNo (predeterminado en macOS)
Escrito enRust (desde 4.0)CC
Configuración webSí (fish_config)NoNo
Gestores de pluginsFisher, Oh My FishNinguno integradoOh My Zsh, Antigen, etc.

Autosugerencias y completados

Aquí es donde Fish toma ventaja de inmediato. Abre una instalación nueva de Fish, empieza a escribir, y obtienes sugerencias en gris de tu historial de comandos. Presiona la flecha derecha para aceptar. Sin configuración, sin plugins, nada que instalar. Escribí una guía completa sobre autocompletado y sugerencias de Fish Shell que cubre todo lo que este sistema puede hacer.

Bash no tiene nada parecido de serie. Puedes instalar ble.sh o usar fzf para búsqueda difusa en el historial, pero requiere esfuerzo.

Zsh lo consigue con zsh-autosuggestions, pero tienes que instalarlo tú mismo. Escribí una guía sobre cómo habilitar autocompletado de comandos en Zsh si prefieres esa ruta.

Fish también analiza las páginas man para generar completados automáticamente. Escribe git y presiona tab, y obtienes completados para subcomandos, flags y nombres de ramas sin ninguna configuración adicional. Zsh puede igualar esto con la configuración adecuada (compinit más plugins), pero requiere trabajo. El completado con tab de Bash es muy básico en comparación.

Resaltado de sintaxis

Fish resalta tus comandos mientras los escribes. Los comandos válidos tienen un color, los inválidos aparecen en rojo, y las cadenas de texto tienen su propio color. Puedes detectar errores tipográficos antes de presionar enter. Tengo una guía detallada sobre el resaltado de sintaxis de Fish Shell si quieres ver cómo funciona internamente.

Zsh necesita zsh-syntax-highlighting para el mismo comportamiento. Escribí sobre habilitar resaltado de sintaxis en Zsh si lo quieres.

Bash no tiene resaltado de sintaxis integrado en absoluto.

Scripting y compatibilidad con POSIX

Aquí está el compromiso. Fish tiene su propia sintaxis de scripting que intencionalmente no es compatible con POSIX. Los desarrolladores de Fish tomaron esta decisión para obtener un lenguaje más limpio, y honestamente la sintaxis es más fácil de leer:

# Fish - sintaxis más limpia
if test -f ~/.config/fish/local.fish
    source ~/.config/fish/local.fish
end

for file in *.txt
    echo $file
end

# Variables
set greeting "hello"
echo $greeting

Compara eso con Bash:

# Bash - estilo POSIX
if [ -f ~/.bashrc_local ]; then
    source ~/.bashrc_local
fi

for file in *.txt; do
    echo "$file"
done

# Variables
greeting="hello"
echo "$greeting"

La versión de Fish es más legible. Pero aquí viene el inconveniente: no puedes copiar y pegar comandos de Bash de Stack Overflow y esperar que funcionen en Fish. Cualquier cosa que use && entre comandos, $(...) para sustitución de comandos (Fish usa (...) sin el signo de dólar), o pruebas [[ ]] específicas de Bash no funcionará directamente.

En la práctica, esto importa menos de lo que pensarías. La mayor parte del tiempo estás ejecutando comandos, no escribiendo scripts de shell. Y cuando necesitas un script, siempre puedes poner #!/bin/bash al principio y ejecutarlo como un script de Bash desde Fish. Para comandos personalizados específicos de Fish, revisa mi guía sobre funciones de Fish Shell.

Consejo de compatibilidad POSIX

Puedes ejecutar cualquier script de Bash desde Fish. Solo usa bash script.sh o haz el script ejecutable con un shebang #!/bin/bash. La sintaxis no-POSIX de Fish solo afecta lo que escribes interactivamente y los scripts específicos de Fish.

Configuración

Fish almacena su configuración en ~/.config/fish/config.fish y soporta un directorio conf.d/ para archivos de configuración modulares. También tiene una herramienta de configuración web: ejecuta fish_config y se abre un navegador donde puedes cambiar colores, ver funciones y establecer variables. Suena superfluo, pero es genuinamente útil para previsualizar temas de colores rápidamente.

Bash usa ~/.bashrc (y a veces ~/.bash_profile). Todo es edición manual.

Zsh usa ~/.zshrc. Con Oh My Zsh instalado, obtienes un framework que gestiona plugins y temas, pero el archivo de configuración puede volverse largo. Cubrí algunos de los mejores plugins de Oh My Zsh si estás en el equipo Zsh.

Rendimiento

Fish 4.0 fue reescrito de C++ a Rust, lanzado en febrero de 2025. La última versión es 4.5.0 (febrero de 2026). El inicio se siente instantáneo en mis máquinas. Es ligeramente más pesado que un shell Bash básico, pero la diferencia se mide en milisegundos y no lo vas a notar.

Zsh con Oh My Zsh cargado y varios plugins puede ser notablemente lento al iniciar, a veces tardando más de un segundo. Hay soluciones (carga diferida, gestores de plugins más ligeros como zinit), pero es algo que tienes que gestionar activamente.

Bash puro arranca más rápido porque es el más minimalista. Pero también obtienes menos funcionalidades de serie.

Para uso interactivo, Fish se siente el más ágil porque las autosugerencias y los completados funcionan al instante. El “rendimiento” que más importa para un shell es lo rápido que responde mientras escribes, y Fish gana aquí.

Ecosistemas de plugins

Fish tiene dos gestores de plugins principales:

  • Fisher - ligero, rápido, sin configuración. Es lo que la mayoría usa ahora. Ejecuta fisher install author/plugin y listo.
  • Oh My Fish - un framework similar a Oh My Zsh. Lleva un tiempo sin mantenimiento y la página de GitHub incluye una advertencia al respecto. Yo recomendaría Fisher para instalaciones nuevas, pero si tienes curiosidad, tengo una guía sobre instalación y uso de Oh My Fish.

Profundizo mucho más en esto en Mejores plugins y herramientas para Fish Shell.

Zsh tiene el ecosistema de plugins más grande gracias a Oh My Zsh, que tiene más de 300 plugins y más de 150 temas. Antigen, zinit y zplug son gestores de plugins alternativos con diferentes perfiles de rendimiento.

Bash no tiene un ecosistema de plugins real. Existen frameworks de dotfiles como bash-it, pero la adopción es mucho menor.

Curva de aprendizaje

Bash: probablemente ya lo conoces. Está en todas partes, y la mayoría de tutoriales de Linux asumen que lo estás usando.

Zsh: casi sin curva de aprendizaje viniendo de Bash. La sintaxis es casi idéntica, y Oh My Zsh proporciona una experiencia guiada. Es esencialmente Bash con extras.

Fish: hay un pequeño periodo de adaptación. Las diferencias de sintaxis te confunden durante el primer día o dos, especialmente en torno a la asignación de variables (set en lugar de =) y la sustitución de comandos. Después de eso, las funcionalidades integradas significan que en realidad tienes menos que aprender en general porque no necesitas configurar tanto.

Cuándo usar cuál

Elige Fish si quieres un shell que funcione bien desde el primer momento, no escribes scripts POSIX con frecuencia, y valoras las autosugerencias y el resaltado de sintaxis sin configuración. Si esto te describe, revisa cómo instalar Fish Shell en Ubuntu para empezar.

Elige Zsh si quieres lo mejor de ambos mundos: compatibilidad con Bash con funcionalidades modernas mediante plugins. Te sientes cómodo configurando cosas. Oh My Zsh te da una gran comunidad y montones de temas.

Elige Bash si escribes scripts de shell que necesitan ejecutarse en cualquier lugar, trabajas en servidores donde Bash es el único shell disponible, o prefieres la máxima compatibilidad POSIX.

Mi opinión

Me pasé a Fish hace aproximadamente un año y no he mirado atrás. La experiencia de uso desde el primer momento es simplemente mejor que cualquier cosa que logré construir con plugins de Zsh. Las autosugerencias, el resaltado de sintaxis, los completados de páginas man y la sintaxis de scripting limpia hacen el trabajo diario más rápido.

La incompatibilidad con POSIX me molestó durante una semana aproximadamente. Aprendí a usar bash -c 'command' para los comandos ocasionales, y mantengo mis scripts de automatización como scripts de Bash. No es un problema.

Si quieres una comparación más profunda entre solo Fish y Zsh, escribí un artículo enfocado sobre Fish Shell vs Zsh. Y si quieres personalizar tu prompt de Fish, mira cómo configurar Starship con Fish Shell o mi comparación de temas y prompts de Fish Shell que cubre Tide, Starship, Pure y Hydro.

Guías relacionadas de Fish Shell