17 Punkte von GN⁺ 2026-01-11 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Oh My Zsh (OMZ) wird weiterhin häufig empfohlen, verursacht aber unnötigen Skript-Overhead, der die Startzeit der Shell verlangsamt
  • OMZ ist in Shell-Skripten geschrieben, sodass beim Öffnen jedes neuen Terminal-Tabs alle Skripte erneut interpretiert werden müssen; selbst mit der Standardkonfiguration entsteht dabei eine Verzögerung von etwa 0,38 Sekunden
  • Mit einer einfachen minimalen Zsh-Konfiguration, dem Starship-Prompt und einer fzf-basierten Verlaufssuche lässt sich die Startzeit auf 0,07 Sekunden verkürzen
  • Starship erstellt den Prompt als einzelnes Binary und ersetzt damit die bisherigen git-, virtuelle-Umgebung- und sprachspezifischen Plugins von OMZ
  • Statt komplexer Plugins ist eine verschlankte Shell-Konfiguration, bei der nur die benötigten Funktionen direkt hinzugefügt werden, effizienter

Performance-Probleme von Oh My Zsh

  • Oh My Zsh (OMZ) ist weiterhin weit verbreitet, verlangsamt aber durch unnötigen Ballast (bloat) die Startgeschwindigkeit der Shell
    • OMZ besteht aus Shell-Skripten, die beim Öffnen jedes neuen Terminal-Tabs vollständig interpretiert werden müssen
    • In einer Konfiguration mit den Standard-Plugins git, zsh-autosuggestions und zsh-autocomplete ergab die Ausführung von /usr/bin/time -f "%e seconds" zsh -i -c exit 0,38 Sekunden
  • Wird ein neuer Tab in einem git-Repository geöffnet, entsteht subjektiv eine Verzögerung von etwa 1 Sekunde
  • OMZ prüft regelmäßig auf Updates, was mehrere zusätzliche Sekunden Verzögerung verursachen kann
  • Häufige Updates der Shell-Konfiguration sind unnötig; empfohlen wird eine einfache Konfiguration, in die nur die tatsächlich benötigten Funktionen direkt aufgenommen werden

Minimale Zsh-Konfiguration

  • Die vorgeschlagene minimale Zsh-Konfiguration sieht wie folgt aus
    export HISTSIZE=1000000000
    export SAVEHIST=$HISTSIZE
    setopt EXTENDED_HISTORY
    setopt autocd
    autoload -U compinit; compinit
    
    • HISTSIZE und SAVEHIST legen die Größe des Befehlsverlaufs fest
    • EXTENDED_HISTORY fügt dem Verlauf Zeitstempel hinzu
    • autocd erlaubt den Verzeichniswechsel ohne den Befehl cd
    • compinit initialisiert das Autovervollständigungssystem
  • Schon diese Konfiguration bietet eine grundlegende Shell-Umgebung mit Vervollständigung

Anpassung des Prompts

  • Für den Prompt wird Starship verwendet
    • Starship ist ein schneller, minimalistischer Prompt in Form eines einzelnen Binarys
    • Es ersetzt die bisherigen Plugins und Themes von OMZ und zeigt git-, virtuelle-Umgebung- und sprachspezifische Statusinformationen an
  • Im Beispiel für die Starship-Konfiguration werden cloudbezogene Anzeigen wie AWS, GCP, Azure und NodeJS deaktiviert, um visuelles Rauschen zu reduzieren
  • In Python- und Rust-Projekten wird die jeweilige Sprache im Prompt hervorgehoben; außerdem wird die Laufzeit von Befehlen angezeigt
  • Aktivierung durch Hinzufügen dieser einen Zeile in .zshrc
    eval "$(starship init zsh)"
    

Verlaufssuche

  • Das häufig verwendete Plugin zsh-autosuggestions zeigt Vorschläge während der Eingabe an und kann dadurch ablenkend wirken
  • Stattdessen wird fzf an Ctrl+R gebunden, um den Verlauf per interaktiver Fuzzy-Suche zu durchsuchen
    source <(fzf --zsh)
    

Ergebnis der Performance-Verbesserung

  • Nach Anwendung der obigen Konfiguration ergibt sich für die Shell-Startzeit
    ❯ /usr/bin/time -f "%e seconds" zsh -i -c exit
    0.07 seconds
    
  • Damit ist die Startgeschwindigkeit im Vergleich zu OMZ mehr als fünfmal höher

Zusätzliche Tipps

  • Vim-Nutzer können in Zsh den Vim-Modus aktivieren, um die Bearbeitung von Befehlen zu beschleunigen
    set -o vi
    bindkey -v '^?' backward-delete-char
    
    • zle verwendet standardmäßig Emacs-Keybindings; mit dieser Einstellung wird die Eingabe im Vim-Stil unterstützt

Fazit und Einsatzszenarien

  • Nach dem Wechsel von OMZ erfolgte die Anpassung an den neuen Workflow innerhalb weniger Tage
  • Benötigte Plugins können direkt manuell geladen werden
  • Der Grund für das Öffnen vieler Tabs ist die gemeinsame Nutzung von tmux und einem terminalbasierten Editor (helix)
    • In tmux werden lazygit und der Dateimanager yazi als Pop-ups ausgeführt
    • Für Code-Ausführung und Testausgaben werden temporäre Splits verwendet, die jeweils als eigene Shell-Sitzung laufen

Zusammenfassung der Kommentare

  • Einige Nutzer behaupten, die Startzeit von OMZ liege mit 0,03 Sekunden bereits in einem ausreichend schnellen Bereich
  • Der Autor weist darauf hin, dass das Plugin zsh-autocomplete die Geschwindigkeit verringert
  • In Ergebnissen von zsh-bench wurde für OMZ eine Verzögerung bis zum ersten Prompt von 603 ms gemessen, für eine einfache Zsh-Konfiguration 103 ms
  • Starship ersetzt die promptbezogenen Funktionen von OMZ durch ein einzelnes Werkzeug
  • Andere Nutzer erwähnen Alternativen wie Zimfw, Atuin und selbst geschriebene bash-Prompts

Noch keine Kommentare.

Noch keine Kommentare.