---
title: "Fish Shell en macOS - Guía Completa de Configuración"
description: "Cómo instalar y configurar Fish Shell en macOS con Homebrew, establecerlo como shell por defecto, configurar iTerm2 o Ghostty, e instalar herramientas esenciales."
date: 2026-02-19
categories: ["vps"]
tags: ["fish-shell"]
---

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

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:

```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

Instalar Fish:

```bash
brew install fish
```

Verificar la versión:

```bash
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).

```bash
# 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`.

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

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

```bash
brew install font-meslo-lg-nerd-font
```

Luego configúrala como la fuente de tu terminal. Así se hace en las opciones populares:

<Accordion label="Ghostty" group="terminals" expanded="true">
Añade a `~/.config/ghostty/config`:

```
font-family = MesloLGS Nerd Font
font-size = 14
```

Ghostty es un terminal rápido con aceleración GPU. Tengo una [guía completa de configuración de Ghostty](/ghostty-terminal/) si quieres explorar sus funcionalidades.
</Accordion>

<Accordion label="iTerm2" group="terminals">
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
</Accordion>

<Accordion label="Alacritty" group="terminals">
En `~/.config/alacritty/alacritty.toml`:

```toml
[font]
size = 14

[font.normal]
family = "MesloLGS Nerd Font"
```
</Accordion>

<Accordion label="WezTerm" group="terminals">
En `~/.wezterm.lua`:

```lua
config.font = wezterm.font("MesloLGS Nerd Font")
config.font_size = 14.0
```

Tengo una [guía de configuración de WezTerm](/install-wezterm-mac/) que cubre la integración con zoxide y tmux.
</Accordion>

## Configuración básica de Fish

Crea tu archivo de configuración:

```fish
mkdir -p ~/.config/fish
nano ~/.config/fish/config.fish
```

Una configuración inicial práctica para macOS:

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

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

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

### Instalar plugins de Fish

```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](/es/mejores-plugins-fish-shell/) para la lista completa.

### Configurar Starship (o Tide)

Para Starship, añade a `config.fish`:

```fish
starship init fish | source
```

Para Tide en su lugar:

```fish
fisher install IlanCosman/tide@v6
tide configure
```

Comparé estas y otras opciones de prompt en [Temas de Fish Shell — mejores prompts](/es/fish-shell-temas-prompts/). También tengo una [guía dedicada de Starship + Fish](/es/fish-shell-configurar-starship/).

### Configurar zoxide

Añade a `config.fish`:

```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](/zoxide/).

### Configurar alias de eza

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

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

```fish
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](/es/nvm-fish-shell/).

## Problemas comunes en macOS

<Accordion label="El PATH de Homebrew no funciona" group="issues" expanded="true">
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
fish_add_path /opt/homebrew/bin
fish_add_path /opt/homebrew/sbin
```

Pon estas líneas al principio de tu archivo de configuración.
</Accordion>

<Accordion label="Variables de entorno de .zshrc ausentes" group="issues">
Fish no lee `.zshrc` ni `.bash_profile`. Mueve tus variables de entorno a `config.fish` usando `set -gx`:

```fish
set -gx JAVA_HOME (/usr/libexec/java_home)
set -gx ANDROID_HOME ~/Library/Android/sdk
fish_add_path $ANDROID_HOME/platform-tools
```
</Accordion>

<Accordion label="El agente SSH no reenvía" group="issues">
El agente SSH de macOS funciona con Fish, pero puede que necesites cargar tus claves:

```fish
# ~/.config/fish/conf.d/ssh.fish
if status is-interactive
    ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2>/dev/null
end
```
</Accordion>

## Guías relacionadas

- [Fish Shell vs Bash vs Zsh](/es/fish-shell-vs-bash-vs-zsh-comparacion/) — comparación de los tres shells
- [Fish Shell vs Zsh](/es/fish-shell-vs-zsh-comparacion/) — ya que probablemente vienes de Zsh en Mac
- [Instalar Fish en Ubuntu](/es/instalar-fish-shell-ubuntu/) — si también usas Linux
- [Guía de historial de Fish Shell](/es/fish-shell-historial-persistencia/) — gestiona y busca tu historial de comandos
- [Configuración de Starship y Ghostty](/starship-ghostty-terminal/) — combinación moderna de terminal + prompt
- [Guía de Ghostty Terminal](/ghostty-terminal/) — configuración completa de Ghostty para Mac