Shells für Linux und Unix richtig nutzen

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten




Hilfreich: In der Datei /etc/shells steht, welche Shells auf einem Linux-System unterstützt werden

Was für Windows die Eingabeauffordung, ist unter Linux / Unix die Shell. Der Benutzer hat dabei die Wahl zwischen verschiedenen Shells, von denen wir hier acht detaillierter vorstellen. Sie ermöglichen es dem Nutzer, direkten Kontakt zum Betriebssystem aufzunehmen. Linux- / Unix-Nutzer sind in der Wahl ihrer Werkzeuge wesentlich freier als Windows-Anwender. Sie können einerseits zwischen verschiedenen grafischen Desktops wie Enlightenment, GNOME, KDE, LXDE und Xfce wählen. Und während es auf der Konsole in Windows nur cmd.exe und die sogenannte Powershell gibt, kann man in Unix verschiedene Shells als Kommandointerpreter nutzen. Welche das sein können, steht in der Datei /etc/shells, die etwa in Ubuntu folgenden Inhalt hat:








# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen

Von den gelisteten Shells sind nicht alle installiert, lediglich sh, dash, bash, rbash und screen stehen in der Anfangskonfiguration zur Verfügung. Die anderen kann der Administrator bei Bedarf nachträglich installieren. Möchte man eine Shell ausprobieren, kann der Benutzer diese direkt am Prompt mit der Eingabe des Befehls starten. Eine Übersicht über die Möglichkeiten liefern die entsprechenden Manpages.

Shell wechseln

Freie Auswahl: Mit dem Befehl chsh kann der Benutzer die Login-Shell wechseln. Die Manpage erklärt, wie das geht.

Wenn Sie zu einer anderen Shell wechseln wollen, hilft das Kommando chsh. Hier wird zuerst die aktuelle Shell angezeigt, anschließend kann eine neue eingegeben werden; achten Sie darauf, dass Sie den gesamten Pfad angeben, etwa /bin/dash. Die einzige Einschränkung für die Login-Shell ist, dass der Name des Befehls in der Datei /etc/shells enthalten sein muss. Root darf allerdings jeden beliebigen Befehl ausführen.

Bei Konten mit einer eingeschränkten Login-Shell kann diese nicht geändert werden. Die Manpage zu chsh empfiehlt, diese nicht in die Datei /etc/shells einzutragen, weil Benutzer nicht von sich aus zu der ursprünglichen Login-Shell zurückwechseln können. Diesem Rat folgend sollte ein Ubuntu-Administrator die Zeile /bin/rbash in der Datei /etc/shells löschen oder auskommentieren.


Tipp: Will der Administrator für alle künftigen Benutzer die Shell wechseln, tut er das am besten in der Datei /etc/adduser.conf. Dort steht in der Zeile "DSHELL=" die Standard-Shell für Neuzugänge.


Die Bourne-Shell: sh

Stephen Bourne - nicht zu verwechseln mit dem Filmagenten Jason Bourne - hat in den 1970er-Jahren die Bourne-Shell sh entwickelt. Sie war Ersatz für die Shell von Unix-Vater Ken Thompson, dessen Thompson-Shell die erste Unix-Shell war. Die Bourne-Shell gilt als Vorfahre der meisten heutigen Shells; sie besaß damals bereits alle wichtigen Funktionen wie Ein- und Ausgabeumlenkung, Pipes und Hintergrundprozesse. Unter Unix laufende Skripte sind meist für die Bourne-Shell geschrieben und funktionieren auch in den meisten anderen Shells. Damit es keine Probleme gibt, liegt deshalb auch immer eine Bourne-kompatible Shell hinter dem Kommando /bin/sh. Die Bourne-Shell beherrscht Programmierfunktionen wie "if - then - elif - fi", "case - in - esac" und "for - while - do - od". Kritik an der Bourne-Shell betraf und betrifft hauptsächlich die mangelnde Interaktivität, wie sie etwa die C-Shell mit Job-Kontrolle und History-Funktion bietet. Auch ist die Bourne-Shell teilweise verhasst, weil ihre Grammatik mehr der Programmiersprache ALGOL ähnelt denn C wie im Rest von Unix. Bekrittelt wird auch immer wieder, dass selbst einfache arithmetische Funktionen mithilfe von Tools wie test und expr erledigt werden müssen.