Ubuntu: Standard-Shell mit chsh wechseln und anpassen

Einführung & Grundlagen

In Unix- und Linux-Umgebungen bestimmt die zugewiesene Login-Shell maßgeblich, wie Anwender mit dem Betriebssystem interagieren. Dieses Tutorial demonstriert den praxisnahen Einsatz des Systemwerkzeugs chsh (Change Shell) unter Ubuntu. Neben der praktischen Durchführung beleuchten wir die zugrundeliegenden Mechanismen und das Zusammenspiel mit den Konfigurationsdateien /etc/shells sowie /etc/passwd.

Aktive Shell ermitteln und verfügbare Login-Shells abfragen

Vor einer Modifikation empfiehlt sich stets eine Bestandsaufnahme der aktuellen Terminalumgebung. Über die Umgebungsvariable $SHELL lässt sich die derzeit aktive Login-Shell unmittelbar abfragen:

echo $SHELL

Die Terminalausgabe signalisiert eindeutig, dass dem gegenwärtig angemeldeten Benutzerkonto standardmäßig /bin/bash zugeordnet ist.

Abfrage der aktiven Login-Shell über echo $SHELL

Das Betriebssystem erlaubt aus Sicherheitsgründen nicht die willkürliche Wahl jedes beliebigen Pfades als Login-Shell. Welche Interpreter als legitim eingestuft sind, definiert die Whitelist /etc/shells. Der Dateiinhalt lässt sich mit folgendem Aufruf einsehen:

cat /etc/shells

In der Liste tauchen etablierte Binärdateien wie /bin/sh und /bin/bash auf. Nur Pfade, die hier verzeichnet sind, akzeptiert das Dienstprogramm chsh für reguläre Konten ohne administrative Warnungen.

Inhalt der Datei /etc/shells prüfen

Alternative Shell (zsh) einrichten und Binärpfade validieren

Um einen Shell-Wechsel praxisnah durchzuspielen, installieren wir die populäre zsh über das APT-Paketmanagement:

sudo apt-get update -qq && sudo apt-get install -y zsh

Nach Abschluss des Installationsvorgangs steht die Z-Shell auf dem System bereit.

Installation von zsh via APT

Da Befehle je nach Linux-Distribution an unterschiedlichen Orten im Verzeichnisbaum liegen können, lokalisieren wir den exakten Pfad des neu installierten Interpreters:

which zsh

Das System meldet zurück, dass die ausführbare Binärdatei unter /usr/bin/zsh hinterlegt wurde.

Lokalisierung des zsh-Pfads

Moderne Paketmanager tragen frisch installierte Shells in der Regel eigenständig in /etc/shells ein. Wir verifizieren diesen Schritt mit einem gezielten Filterbefehl:

grep -E 'bash|zsh' /etc/shells

Das Ergebnis bestätigt die Präsenz von /bin/zsh sowie /usr/bin/zsh. Somit erfüllt zsh alle Systemvoraussetzungen für die Zuweisung als Standard-Shell.

Überprüfung der Zsh-Einträge in /etc/shells

Die Standard-Login-Shell via chsh konfigurieren

Zur Absicherung kontrollieren wir zunächst den Namen des aktuell agierenden Accounts:

id -un

Die Rückmeldung weist aus, dass die folgenden Operationen für den Benutzer root ausgeführt werden.

Prüfung des Benutzernamens

Mithilfe des Parameters -s weisen wir dem Benutzerkonto nun die neue Standard-Shell zu. Anstelle eines statischen Strings binden wir direkt die Befehlssubstitution von which ein:

chsh -s $(which zsh)

Das geräuschlose Beenden ohne Fehlermeldung signalisiert die erfolgreiche Umschreibung auf /usr/bin/zsh.

Zuweisung der neuen Shell mit chsh

Hinter den Kulissen modifiziert chsh den entsprechenden Datensatz in der Benutzerdatenbank /etc/passwd. Zur Überprüfung filtern wir den spezifischen Kontoeintrag heraus:

grep "^$(whoami):" /etc/passwd

Das siebte und letzte Feld der Zeile verweist nun explizit auf /usr/bin/zsh. Ab der nächsten interaktiven Sitzung startet das System standardmäßig die neu konfigurierte Shell.

Validierung der Änderung in /etc/passwd

Systeminterna verstehen und bash als Standard wiederherstellen

Nach erfolgreichem Testlauf setzen wir die Konfiguration wieder auf den ursprünglichen Ubuntu-Standard zurück:

chsh -s /bin/bash

Auch diese Rücknahme quittiert das System sauber ohne Fehlerausgabe.

Rückkehr zur bash-Shell

Abschließend verifizieren wir den Datensatz in /etc/passwd erneut:

grep "^$(whoami):" /etc/passwd

Das Zielfeld schließt wieder mit /bin/bash ab. Das Benutzerkonto befindet sich damit verlässlich wieder im ursprünglichen Auslieferungszustand.

Bestätigung des bash-Eintrags in /etc/passwd

Die Anpassung der Standard-Shell mittels chsh ist ein unkomplizierter, aber wirkungsvoller Eingriff in die persönliche Arbeitsumgebung. Dank des Zusammenspiels mit /etc/shells bleibt die Integrität des Systems stets gewahrt, während Entwickler ihre bevorzugte Terminal-Erfahrung flexibel realisieren können.