Fish Shell en macOS - Guía Completa de Configuración
Cómo instalar y configurar Fish Shell en macOS con Homebrew, establecerlo como shell por defecto, configurar iTerm2 o Ghostty, e instalar herramientas esenciales.
macOS viene con Zsh como shell por defecto (Apple cambió de Bash en 2019). Fish no está incluido, pero está a un solo comando de Homebrew. Uso Fish tanto en mi Mac como en mis máquinas Linux, y la experiencia es casi idéntica en ambos — que es una de las cosas que me gustan.
Esta guía cubre la configuración completa en macOS: instalación, hacer de Fish tu shell por defecto, configuración del emulador de terminal y las herramientas esenciales que instalo junto a él.
Instalar Fish con Homebrew
Si todavía no tienes Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Instalar Fish:
brew install fish
Verificar la versión:
fish --version
Deberías ver fish, version 4.5.0 o más reciente. Homebrew mantiene Fish actualizado — ejecuta brew upgrade fish periódicamente.
Probar Fish sin cambiar de shell
Escribe fish en tu terminal actual para iniciar una sesión de Fish. Juega con las autosugerencias (empieza a escribir y observa las sugerencias grises que aparecen), el completado con Tab y el resaltado de sintaxis. Escribe exit para volver a Zsh.
Establecer Fish como shell por defecto
macOS requiere que el shell esté listado en /etc/shells antes de poder configurarlo como predeterminado. Homebrew instala Fish en /opt/homebrew/bin/fish (Apple Silicon) o /usr/local/bin/fish (Intel).
# Find your Fish path
which fish
# Add it to allowed shells
echo (which fish) | sudo tee -a /etc/shells
# Set as default
chsh -s (which fish)
Abre una nueva ventana de terminal. Deberías estar en Fish.
Para volver a Zsh después: chsh -s /bin/zsh.
Conserva Zsh
Los scripts del sistema de macOS a veces esperan Zsh o Bash. No los elimines. Fish reemplaza tu shell interactivo, no la capa de scripting del sistema.
Configuración del emulador de terminal
Fish funciona en cualquier terminal, pero la fuente importa. El paginador de completado de Fish y muchos temas de prompt usan caracteres especiales que necesitan una Nerd Font.
Instalar una Nerd Font
brew install font-meslo-lg-nerd-font
Luego configúrala como la fuente de tu terminal. Así se hace en las opciones populares:
Ghostty
Añade a ~/.config/ghostty/config:
font-family = MesloLGS Nerd Font
font-size = 14Ghostty es un terminal rápido con aceleración GPU. Tengo una guía completa de configuración de Ghostty si quieres explorar sus funcionalidades.
iTerm2
Ve a Preferences → Profiles → Text → Font y selecciona “MesloLGS NF”. Ajusta el tamaño a tu preferencia (yo uso 14).
También vale la pena habilitar en iTerm2:
- Preferences → Profiles → Terminal → Shell Integration — permite hacer clic para seleccionar la salida de comandos
- Preferences → General → Selection → Applications in terminal may access clipboard — para que las operaciones de copiado de Fish funcionen
Alacritty
En ~/.config/alacritty/alacritty.toml:
[font]
size = 14
[font.normal]
family = "MesloLGS Nerd Font" WezTerm
En ~/.wezterm.lua:
config.font = wezterm.font("MesloLGS Nerd Font")
config.font_size = 14.0Tengo una guía de configuración de WezTerm que cubre la integración con zoxide y tmux.
Configuración básica de Fish
Crea tu archivo de configuración:
mkdir -p ~/.config/fish
nano ~/.config/fish/config.fish
Una configuración inicial práctica para macOS:
# ~/.config/fish/config.fish
# Homebrew (Apple Silicon)
fish_add_path /opt/homebrew/bin
fish_add_path /opt/homebrew/sbin
# Common paths
fish_add_path ~/bin
fish_add_path ~/.local/bin
# Suppress the greeting
set -g fish_greeting
# Editor
set -gx EDITOR "code --wait" # or vim, nvim, etc.
# Homebrew completions
if test -d (brew --prefix)"/share/fish/completions"
set -p fish_complete_path (brew --prefix)/share/fish/completions
end
if test -d (brew --prefix)"/share/fish/vendor_completions.d"
set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end
El bloque de completions de Homebrew es importante — sin él, te pierdes el completado con Tab para los comandos instalados con Homebrew.
Instalar herramientas esenciales
Este es mi conjunto estándar de herramientas complementarias para Fish en macOS:
brew install fisher # plugin manager (or install via curl)
brew install starship # cross-shell prompt
brew install zoxide # smarter cd
brew install eza # modern ls replacement
brew install fzf # fuzzy finder
brew install bat # better cat with syntax highlighting
brew install fd # better find
brew install ripgrep # better grep
Configurar Fisher
Si instalaste Fisher vía Homebrew, está listo. De lo contrario:
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
Instalar plugins de Fish
fisher install PatrickF1/fzf.fish # fuzzy search integration
fisher install jorgebucaran/autopair.fish # auto-close brackets
fisher install meaningful-ooo/sponge # remove failed commands from history
Consulta mi guía de los mejores plugins de Fish Shell para la lista completa.
Configurar Starship (o Tide)
Para Starship, añade a config.fish:
starship init fish | source
Para Tide en su lugar:
fisher install IlanCosman/tide@v6
tide configure
Comparé estas y otras opciones de prompt en Temas de Fish Shell — mejores prompts. También tengo una guía dedicada de Starship + Fish.
Configurar zoxide
Añade a config.fish:
zoxide init fish | source
Ahora usa z en lugar de cd: z projects te lleva a tu directorio de proyectos. Guía completa en mi artículo sobre zoxide.
Configurar alias de eza
# ~/.config/fish/conf.d/eza.fish
abbr -a ls eza
abbr -a ll "eza -la --icons --git"
abbr -a lt "eza -la --icons --tree --level=2"
Abreviaturas específicas de macOS
# ~/.config/fish/conf.d/macos.fish
# Quick Look from terminal
abbr -a ql "qlmanage -p"
# Open current directory in Finder
abbr -a finder "open ."
# Flush DNS
abbr -a flushdns "sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
# Show/hide hidden files in Finder
abbr -a showhidden "defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
abbr -a hidehidden "defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
Cubro las abreviaturas vs alias en detalle en Fish Shell abreviaturas vs alias.
Gestión de versiones de Node.js
El nvm basado en Bash no funciona en Fish. Usa nvm.fish en su lugar:
fisher install jorgebucaran/nvm.fish
nvm install lts
set --universal nvm_default_version lts
Guía completa paso a paso en mi guía de NVM con Fish Shell.
Problemas comunes en macOS
El PATH de Homebrew no funciona
En los Mac con Apple Silicon, Homebrew se instala en /opt/homebrew/ en lugar de /usr/local/. Asegúrate de que tu config.fish tenga:
fish_add_path /opt/homebrew/bin
fish_add_path /opt/homebrew/sbinPon estas líneas al principio de tu archivo de configuración.
Variables de entorno de .zshrc ausentes
Fish no lee .zshrc ni .bash_profile. Mueve tus variables de entorno a config.fish usando set -gx:
set -gx JAVA_HOME (/usr/libexec/java_home)
set -gx ANDROID_HOME ~/Library/Android/sdk
fish_add_path $ANDROID_HOME/platform-tools El agente SSH no reenvía
El agente SSH de macOS funciona con Fish, pero puede que necesites cargar tus claves:
# ~/.config/fish/conf.d/ssh.fish
if status is-interactive
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null
end Guías relacionadas
- Fish Shell vs Bash vs Zsh — comparación de los tres shells
- Fish Shell vs Zsh — ya que probablemente vienes de Zsh en Mac
- Instalar Fish en Ubuntu — si también usas Linux
- Guía de historial de Fish Shell — gestiona y busca tu historial de comandos
- Configuración de Starship y Ghostty — combinación moderna de terminal + prompt
- Guía de Ghostty Terminal — configuración completa de Ghostty para Mac