Kategorien
Allgemein CodeSnippet HowTo Skripte

macOS jetzt mit zsh

Mit macOS X 10.16 Catalina wird kommt die zsh als neue Standard Shell. Ich hatte zuvor einige, praktische Erweiterung für meine bash angelegt, die jetzt erstmal nicht mehr vorhanden waren.

Also Entwickler benutze ich GitHub als Versionsverwaltung, und es ist praktisch in der Shell direkt zu sehen, ob mein aktuelles Verzeichnis auf dem aktuellen Stand ist, ob es Konflikte gibt, usw. Dies hatte ich alles mit der bash, so daß mein Prompt meinen Workflow gut unterstützt hat.

Jetzt kommt zsh und sieht initial echt arm aus.

Mein .bash_profile heisst jetzt .zprofile, die git-completion.sh funktioniert nicht mehr, auch .bashrc wird durch .zshrc ersetzt. Da wird man ja erstmal von seiner Arbeit abgehalten, wenn man ein System OS Update gemacht hat. Aber nach einer kurzen Internet Suche, ich wollte eigentlich nur git-completion.zsh, fand ich das Framework Oh my zsh. Keine Ahnung ob es sowas auch für die bash gibt, aber das hat mich erstmal milde gestimmt, denn damit konnte ich recht einfach all meine lieb gewonnen bash-Completions wieder aktivieren, bekam noch unzählige andere und da man neben funktionalen Plugins auch noch das Aussehen via Themes ändern kann, habe ich jetzt eine Fancy aussehende zsh Shell, mit den alt bekannten Git Informationen.

Wie sieht die Installation des ganzen aus. Begonnen wird natürlich mit dem Framework Oh my zsh.

% sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Wenn man das Framework installiert hat, ist die Basis Version der .zshrc angelegt, die man nach den eigenen Bedürfnissen anpassen kann. Z.B. legt man hier fest, welche Plugins beim Start der Shell geladen werden. Bei mir sieht dies so aus:

plugins=(git ant gradle jenv mvn osx)

Damit hat man bereits die Git-Completion fertig, mit der Anzeige des Status im aktuellen Verzeichnis. Bei Ant, Gradle und Maven bekommt man ebenfalls Code-Completion geliefert und kann so schneller entsprechende Targets finden (wenn man nicht gerade alle auswendig kennt).

Noch ein Beispiel für den Einsatz des jenv-Plugins. Verwendet man für verschiedene Projekte verschiedene JVMs, also lokale jenv Settings, kann man sich im Prompt die aktuelle VM Version ausgeben lassen. Aber neben dem linksbündigen Prompt, gibt es hier die Möglichkeit sich dies auch rechtsbündig anzeigen zu lassen. Die entsprechende Konfiguration in der .zshrc würde so aussehen RPROMPT='$(jenv_prompt_info)'.

Neben den Plugins, gibt es wie bereits erwähnt auch die Möglichkeit die Gestaltung via Themes zu steuern. Ein besonders Umfangreicher Theme ist hier sicherlich powerlevel10k. Die Installation ist auch denkbar einfach, ein Git Clone lädt die Dateien in das korrekte Verzeichnis:

% git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

Zum Aktivieren des Themes muss noch in der .zshrc der Eintrag für ZSH_THEME angepasst werden

ZSH_THEME=powerlevel10k/powerlevel10k

Zum Aktivieren des Themes muss man ein neues Terminal-Fenster oder Tab öffnen. Dann wird man auch direkt mit dem Theme Konfigurator begrüsst.

Die Konfiguration kann aber auch manuell, über ein entsprechendes Kommando, gestartet werden.

% p10k configure

Meine Shell sieht jetzt so aus, in dem Beispiel sieht man noch die git-Completion, bei der man mit den Auf-/Ab-Tasten sogar in der Liste den gewünschten Eintrag auswählen kann.

Einen Punkt noch zur Anmerkung, da beim Öffnen der Shell jetzt einige Skripte laufen (alle Plugins müssen ja mal geladen werden), dauert dies ein paar Sekunden, bei mir in etwa 3 Sekunden. Es gibt auch die Möglichkeit dies zu verkürzen, in dem man den Shell-Prompt direkt anzeigt, ohne Theme, und dann im Hintergrund das ganze erst lädt bevor es angezeigt wird.

Falls man zurück zum Standard Theme möchte, wäre dies robbyrussell, was man wieder in der .zshrc konfiguriert.

Hier noch die Links zu den beiden Paketen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.