CachyOS nutzt fish als Standardshell. Nach Jahren mit bash auf Arch stelle ich mir die Frage: Lohnt sich der Wechsel? Oder bleibt es bei einem kurzen Ausflug, den ich nach einer Woche wieder vergessen habe?
Was fish anders macht
Fish ist keine bash mit anderen Farben. Die Shell denkt anders über Kommandos nach:
Autocomplete
Fish schlägt während der Eingabe Befehle und Argumente vor – nicht nur basierend auf dem PATH, sondern auch auf Verlauf und Kontext. Die Vorschläge erscheinen direkt in der Eingabezeile, nicht als eigenes Fenster wie bei zsh.
# bash: Manuelles Tippen
$ git chec< TAB >
# fish: Automatische Vorschläge
$ git [commit|checkout|cherry-pick|...]
Das ist gewöhnungsbedürftig, aber nach ein paar Tagen schmerzlos.
Syntax-Highlighting
Fish markiert Befehle, die es nicht kennt, in Rot. Variablen werden in einer anderen Farbe angezeigt. Das ist keine Kosmetik – es hilft, Tippfehler sofort zu erkennen, bevor man Enter drückt.
Kein Source nötig
In bash muss man .bashrc und .bash_profile manuell laden. Fish macht das automatisch. Konfigurationsdateien liegen unter ~/.config/fish/ und werden sofort wirksam.
Kein export, keine Anführungszeichen
# bash
export EDITOR=nvim
source ~/.bashrc
# fish
set -x EDITOR nvim
# Kein source nötig, Konfiguration ist sofort aktiv
Variablen müssen nicht in Anführungszeichen gesetzt werden, es sei denn, sie enthalten Leerzeichen.
Die Kehrseite: Bash-Scripts funktionieren nicht
Das ist der größte Punkt: Bash-Scripts sind in fish nicht ausführbar. Die Syntax ist anders, Variablen werden anders behandelt, Pipes funktionieren anders.
# bash
for file in *.md; do
echo "$file"
done
# fish
for file in *.md
echo $file
end
Wer viele eigene Scripts hat, muss diese umschreiben oder in bash ausführen. Fish kann bash-Scripts explizit starten:
bash mein-script.sh
Aber das ist umständlich.
Mein Setup: Bash bleiben, Fish probieren
Nach ein paar Tagen mit fish habe ich mich entschieden: Bash bleibt meine primäre Shell. Die Gründe:
- Bestehende Scripts. Hunderte bash-Scripts, alle funktionieren. Umschreiben wäre Aufwand ohne Mehrwert.
- Gewohnheit. Nach zehn Jahren bash sitzt die Syntax in den Fingern. Fish ist anders – nicht schlecht, aber anders.
- Kompatibilität. Auf jedem Server läuft bash. Fish muss man erst installieren.
- Funktioniert, aber... Fish ist nett, aber der Mehrwert ist nicht groß genug, um den Wechsel zu rechtfertigen.
Was ich aber mache: Fish als interaktive Shell für die Kommandozeile nutzen, bash für Scripts und System-Aufgaben. Das geht, weil fish bash-Scripts direkt ausführen kann.
Vergleich
| Aspekt | Bash | Fish |
|---|---|---|
| Autocomplete | Einfach (TAB) | Erweitert (Echtzeit) |
| Syntax-Highlighting | Nein | Ja |
| Konfiguration | .bashrc, .bash_profile |
~/.config/fish/ |
| Bash-Kompatibilität | – | Nein |
| Scripts | Bash-Syntax | Eigene Syntax |
| Verfügbarkeit | Überall | Nicht immer installiert |
| Lernkurve | Bekannt | Gewöhnungsbedürftig |
| Geschwindigkeit | Schnell | Etwas langsamer |
| Plugins | Wenig nötig | Starship, Autopair, etc. |
Wer sollte zu fish wechseln?
- Neulinge ohne bash-Grundwissen
- Entwickler, die viel in der Konsole arbeiten und Autocomplete schätzen
- Leute mit wenig bestehenden Scripts
Wer sollte bei bash bleiben?
- Server-Admins, die auf Kompatibilität setzen
- Script-Autoren mit vielen bestehenden bash-Scripts
- Leute, die Gewohnheit schätzen
- Alle, die viele Server betreiben
Wenn Desktop und Server verschiedene Shells haben, fühlt sich das komisch an. Man wechselt ständig zwischen fish und bash, merkt die Unterschiede in Syntax und Verhalten, und am Ende ist man der Meinung, dass einheitlich einfach besser ist. Das ist kein technisches Problem, aber ein psychologisches: Wenn man die gleiche Shell auf jedem Gerät nutzt, muss man nicht nachdenken, welche Syntax jetzt gerade gilt.
Fazit
Fish ist eine gute Shell – besser als bash in vielem. Aber besser heißt nicht, dass der Wechsel für jeden sinnvolt ist. Wer viel in der Konsole arbeitet und keine Legacy-Scripts hat, wird von fish profitieren. Wer wie ich seit zehn Jahren bash nutzt und hunderte Scripts im Einsatz hat, sollte bei bash bleiben.
CachyOS liefert fish als Standard – das ist in Ordnung. Aber ich setze bash als Default-Shell zurück und nutze fish nur gelegentlich, wenn ich Lust auf etwas anderes habe. Das Beste aus beiden Welten.