Fish (Friendly Interactive Shell) ist eine moderne Kommandozeilen-Shell, die seit 2005 von Axel Liljencrantz entwickelt wird. Sie ist bewusst nicht POSIX-kompatibel und legt den Fokus auf Komfort: Syntax-Highlighting, Autosuggestions und Tab-Vervollständigung funktionieren ohne Konfiguration. Das Ziel: eine Shell, die direkt nach dem Start für Einsteiger wie Profis angenehm bedienbar ist.

Erste Schritte

fish                    # interaktive Sitzung starten
fish_config             # Konfiguration im Browser (Web-UI)
fish_add_path ~/bin     # Verzeichnis dauerhaft zum PATH hinzufügen
help                    # Dokumentation im Browser öffnen

Die Konfigurationsdatei liegt unter ~/.config/fish/config.fish und wird beim Start automatisch ausgeführt.

Befehle und Eigenheiten

  • Autosuggestions: Fish zeigt während der Eingabe graue Vorschläge an; mit oder Ctrl-F wird der Vorschlag übernommen.
  • Variablen: set -l (lokal), set -g (global), set -U (universell, über Sitzungen hinweg dauerhaft), set -x (exportiert). Statt export VAR=wert schreibt man set -gx VAR wert.
  • Funktionen: function name ... end definiert Funktionen, funced bearbeitet sie interaktiv, funcsave speichert sie dauerhaft.
  • Aliase: alias ll "ls -l" erzeugt intern eine Funktion; abbr definiert Abkürzungen, die erst nach Leertaste expandiert werden.
  • Events: emit sendet eigene Events, --on-event registriert Handler — damit lassen sich Prompts, cd-Wechsel und Timer steuern.
  • Completions: complete ergänzt eigene Vervollständigungen für beliebige Kommandos.
  • Schleifen und Bedingungen: for x in a b c; echo $x; end, if ...; else; end, while ...; end.
  • Verlauf: history zeigt und durchsucht die Historie; cd - wechselt zum vorherigen Verzeichnis.

Erweiterungen

Fisher ist der verbreitete Plugin-Manager für Fish (fisher install plugin). Viele Konfigurations-Frameworks wie Oh My Fish sind inzwischen weniger aktiv, weil Fish viele Features bereits eingebaut mitbringt.

Verwandte Grundlagen: Zsh-Befehle, Xonsh-Befehle und die klassische Bash.