Z shell auf dem Raspberry Pi

Die Standardshell Bash kann auf einem Raspberry Pi durch die modernere Z shell ersetzt werden. Damit lässt sich der Funktionsumfang durch Plugins erweitern und das Aussehen durch diverse Themes sehr einfach anpassen.

Installiert wird Z shell ganz einfach aus den Respositories:

sudo apt install zsh

Zum Abschließen der Installation wird die Konfigurationsdatei .zshrc benötigt. Die kann entweder manuell vom Benutzer in das Home-Verzeichnis kopiert oder angelegt werden oder die einfachste Variante, die Installationsroutine erstellt die Datei.

Ich habe die Option 2 gewählt, also das Anlegen der Standarddatei durch den Installer.

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses --- 2

zsh als Standardshell festlegen

Mit diesem Befehl wird die Standardshell von Bash auf Z shell festgelegt.

Zsh als Standardshell für den Raspberry definieren.

chsh -s $(which zsh)

Anschließend ist der Raspberry Pi neuzustarten.

sudo reboot

zsh optisch aufmotzen

Spaceship Theme installieren

Die Z shell lässt sich mit unterschiedlichen Themes sehr einfach aufhübschen. Auf meinem Mac habe ich bereits das Theme "Spaceship" installiert, das nun auch auf dem Raspberry installiert wird.

Für Mac OS habe ich das bereits in diesem Beitrag beschrieben.

git clone https://github.com/spaceship-prompt/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt" --depth=1

ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

In der Datei .zshrc ist Spaceship zu aktivieren.

#ZSH_THEME="robbyrussell"
ZSH_THEME="spaceship"

Nach einem Neustart der Shell wird Spaceship als Theme genutzt.

Spaceship kann noch weiter angepasst werden. Die Zeilen sind in der Datei .zshrc einzufügen.

### SPACESHIP Configuration

# SPACESHIP Config
SPACESHIP_PROMPT_ADD_NEWLINE=false
SPACESHIP_PROMPT_SEPERATE_LINE=false
SPACESHIP_CHAR_PREFIX=" "
SPACESHIP_CHAR_SUFFIX=" "
SPACESHIP_CHAR_SYMBOL=?

# TIME Section
SPACESHIP_TIME_SHOW=true
SPACESHIP_TIME_PREFIX="at "
SPACESHIP_TIME_SUFFIX=$SPACESHIP_PROMPT_DEFAULT_SUFFIX

# USER Section
SPACESHIP_USER_SHOW=always
SPACESHIP_USER_PREFIX="with "
SPACESHIP_USER_COLOR="yellow"
SPACESHIP_USER_COLOR_ROOT="red"

SPACESHIP_HOST_SHOW=true
SPACESHIP_HOST_COLOR_SSH=green

# DIR
SPACESHIP_DIR_SHOW=true
SPACESHIP_DIR_PREFIX="in "

# BATTERY
SPACESHIP_BATTERY_SHOW=true
SPACESHIP_BATTERY_PREFIX="Battery Status "
SPACESHIP_BATTERY_THRESHOLD=10

SPACESHIP_EXEC_TIME_PREFIX="it took "

# GIT
SPACESHIP_GIT_STATUS_SHOW=true

SPACESHIP_PROMPT_ORDER=(
time          # Time stamps section
  user          # Username section
  dir           # Current directory section
  host          # Hostname section
  git           # Git section (git_branch + git_status)
  hg            # Mercurial section (hg_branch  + hg_status)
  package       # Package version
  gradle        # Gradle section
  maven         # Maven section
  node          # Node.js section
  ruby          # Ruby section
  elixir        # Elixir section
  xcode         # Xcode section
  swift         # Swift section
  golang        # Go section
  php           # PHP section
  rust          # Rust section
  haskell       # Haskell Stack section
  julia         # Julia section
  docker        # Docker section
  aws           # Amazon Web Services section
  gcloud        # Google Cloud Platform section
  venv          # virtualenv section
  conda         # conda virtualenv section
  pyenv         # Pyenv section
  dotnet        # .NET section
  ember         # Ember.js section
  kubectl       # Kubectl context section
  terraform     # Terraform workspace section
  ibmcloud      # IBM Cloud section
  exec_time     # Execution time
  line_sep      # Line break
  battery       # Battery level and status
  vi_mode       # Vi-mode indicator
  jobs          # Background jobs indicator
  exit_code     # Exit code section
  char          # Prompt character
)

Neofetch

Mit Neofetch werden beim Login auf der Shell Systeminformationen angezeigt. Das Paket kann aus den Repositories installiert werden:

sudo apt install neofetch

Dami Neofetch auch bei jedem Login in der Shell aufgerufen wird, ist am Ende der .zshrc die Zeile einzufügen:

### NEOFETCH Settings
neofetch

Die Konfigurationsdatei von Neofetch ist config.conf im Verzeichnis ~/.config/neofetch. Dort kann festgelegt werden was Neofetch für Informationen anzeigen soll.

zsh mit Plugins erweitern

Der Funktionsumfang der Z shell lässt sich mit oh-my-zsh sehr einfach erweitern.
Das Vorgehen ist vergleichbar mit dem bei einem Apple Rechner.

Für Mac OS habe ich das bereits in diesem Beitrag beschrieben.

Oh-my-zsh bietet drei Installationsvarianten an. Ich habe die wget-Option gewählt, die auf der GitHub-Seite aufgeführt sind:

sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Die Aktivierung der oh-my-zsh-Plugins funktioniert ganz einfach in der Datei .zshrc im Home-Verzeichnis eines jeden Benutzers. Dort gibt es einen Plugin Abschnitt. Zwischen die beiden runden Klammern werden einfach die Plugins geschrieben, die genutzt werden sollen.

plugins=(
git
)

Die Liste der verfügbaren Plugins ist auf GitHub einsehbar

Weitere Anpassungen

Die Sprache und die Formatierung lassen sich in der Zeile umstellen:

# You may need to manually set your language environment
export LANG=en_US.UTF-8

wird zu
 
export LANG=de_DE.UTF-8

Am Ende der Datei werden die Farben definiert:

# Colors
LS_COLORS=$LS_COLORS:'di=0;32:' ; export LS_COLOR

Photo by Mohammad Rahmani on Unsplash

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.