Der Standard-Prompt ist zu langweilig? Die Befüllung der Variablen PS1 ist zu kompliziert und unflexibel? Es sollen mehr Informationen dargestellt werden?

Kein Problem, ich habe jetzt das Tool Starship für mich entdeckt. Es ist schnell installiert und auch recht simpel konfiguriert. Wie das funktioniert, habe ich im Nachfolgenden mal aufgeschrieben.

Alte Welt: PS1-Variable

Meine PS1-Variable, die ich in der ~./.bashrc setze, sah bisher immer so aus:

1PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\]:\w\[\033[01;32m\]]\$\[\033[00m\] '

Das sieht dann z.B. so aus:

1mag@rainern:~/homepages/rainerrose.de

Das Ziel

Starship bietet die Möglichkeit noch weitere Informationen einblenden zu lassen, z.B.:

  • aktueller Name des git-Branches
  • virtuelles Enviroment unter Python
  • aktueller Name des Openstack-Projekt

Im folgenden Screenshot sieht man die potentiellen Möglichkeiten.

Screenshot eines bunten Prommpts

Aus Gründen musste ich ein paar Informationen blurren.

Installation

Schritt 1: Binary installieren

Die Installation ist recht einfach und gut auf der Projekt-Homepage beschrieben.

Schritt 2: Aktivieren

Je nach gewählter Shell, muss Starship jetzt noch gestartet werden.

Für die bash, die ich verwendet ist dies ein

1echo 'eval "$(starship init bash)"' >> ~/.bashrc

Alle anderen Shells sind gut auf der Projekt-Webseite beschrieben.

Konfiguration

Zu erst erstellst Du Dir am besten eine leere Konfigurationsdatei.

1mkdir -p ~/.config && touch ~/.config/starship.toml

danach kannst Du meine Konfigurationsdatei weiter unten auf dieser Seite als Vorlage nehmen und sie anpassen.

Auf der Projekt-Webseite sind es weitere, gute Beispiele aufgeführt. In der Regel kannst Du die Beispiele aus der Doku 1:1 in Deine Konfigurationsdatei übernehmen und musst sie ggf. nur etwas anpassen.

Nacharbeiten

Auf meinen Manjaro-Systemen, welche ja auf Arch Linux basieren, musste ich das Fontspaket extra/noto-fonts-emoji nachinstallieren, weil sonst einige Glyphen nicht dargestellt werden konnten.

Um zu testen, ob es Probleme mit einigen Symbolen bzw. Emojis gibt, reichen folgende zwei Befehle:

1echo -e "\xf0\x9f\x90\x8d"
2echo -e "\xee\x82\xa0"

Das erste Symbol sollte eine Schlange darstellen, das zweite ein Strich mit einem Pfeil der daneben läuft.

In der FAQ auf der Projekt-Seite https://starship.rs/faq/#why-don-t-i-see-a-glyph-symbol-in-my-prompt steht es nochmal genauer.

Fertig

Beim nächsten Start einer bash oder das Sourcen der ~/.bashrc sollte Dir den Prompt im neuen Gewand präsentieren.

Dank

Mein Dank geht an Kevin für den Hinweis auf dieses Tool.

Meine Konfig-Datei

 1# https://starship.rs/config/
 2# Get editor completions based on the config schema
 3"$schema" = 'https://starship.rs/config-schema.json'
 4
 5# Inserts a blank line between shell prompts
 6add_newline = true
 7
 8[directory]
 9truncate_to_repo = false
10truncation_length = 0
11
12[git_metrics]
13added_style = 'bold blue'
14format = '[+$added]($added_style)/[-$deleted]($deleted_style) '
15
16[git_status]
17conflicted = '🏳'
18ahead = '🏎💨'
19behind = '😰'
20diverged = '😵'
21up_to_date = '✓'
22untracked = '🤷'
23stashed = '📦'
24modified = '📝'
25staged = '[++\($count\)](green)'
26renamed = '👅'
27deleted = '🗑'
28
29[openstack]
30format = 'on [$symbol$cloud(\($project\))]($style) '
31style = 'bold yellow'
32symbol = '☁ '
33
34[hostname]
35ssh_only = false
36format = '[$ssh_symbol](bold blue)[$hostname](bold red):'
37trim_at = '.companyname.com'
38disabled = false
39
40[username]
41style_user = 'white bold'
42style_root = 'black bold'
43format = '[$user]($style)@'
44disabled = false
45show_always = true
46aliases = { "corpuser034g" = "matchai" }
47
48[kubernetes]
49format = 'on [☸ $user on $context](dimmed green) '
50disabled = false

Ansible-Rolle

Update: 27.12.2024

Inzwischen habe ich für die Installation eine Ansible-Rolle geschrieben. Den dazugehörigen Blog-Artikel findet Du hier.

Changelog

Datum Änderung
25.10.2024 Abschnitt kubernetes in der Konfig hinzugefügt. Synatx-Highlighting gefixed.
27.12.2024 Erwähnung der Ansible-Rolle starship.