Nächste Vorhergehende Inhalt

11. Bash

Wenn Sie am login einen gültigen Benutzernamen und ein gültiges Passwort eingeben, überprüft dieser in /etc/passwd welche Shell Sie erhalten sollen. In den meisten Fällen auf einem Linux System ist dies die bash. Es ist die Aufgabe der bash Ihre Eingaben zu lesen und dafür zu sorgen, das sie bearbeitet werden. Sie ist gleichzeitig ein Benutzerinterface, sowie ein Programmiersprachen Interpreter.

Als Benutzerinterface liest sie Ihre Befehle und führt diese selbst aus, wenn diese "interne" Befehle sind, wie cd, oder sie findet ein externes Programm zur Ausführung, wenn sie "externe" Befehle sind, wie cp oder startx. Sie leistet auch tolle Sachen, wie eine Befehlshistorie zu erstellen und Dateinamen zu vervollständigen.

Wir haben die bash bereits in Aktion gesehen, als Progrmmiersprachen Interpreter. Die Scripte, welche init beim Systemstart ausführt sind gewöhnlich Shell-Scripte und werden ausgeführt von der bash. Wenn man eine gute Programmiersprache hat, zusammen mit den gewöhnlichen Systemutilities, bietet Ihnen die Kommandozeile ein sehr mächtiges Werkzeug, wenn Sie wissen was Sie tun. Zum Beispiel: Ich mußte eine Menge "Patches" auf ein Verzeichnis mit Quelltexten am nächsten Tag ausführen. Ich konnte dies mit dem folgenden Befehl tun:

for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;

Dieser Befehl schaut in mein Home-Verzeichnis nach Dateien, die mit sh-utils-1.16 starten und mit .patch enden. Dann nimmt es nacheinander jede dieser Datei setzt die Variable f und führt den Befehl zwischen do und done aus. In diesem Fall betraf es nur 11 Patch-Dateien, aber es könnten auch leicht 3000 sein.

11.1 Konfiguration

Die Datei /etc/profile kontrolliert das systemweite Verhalten der Bash. Was Sie hier reinschreiben, betrifft jeden, der die Bash benutzt. Es fügt Verzeichnisse zum Pfad und setzt Ihre MAIL Verzeichnisvariable.

Das Standardverhalten der Tastatur läßt viel zu Wünschen übrig. In Wirklichkeit ist es "readline" das dieses behandelt. Readline ist ein separates Paket das Kommandozeilen Interfaces bewerkstelligt. Es stellt die Kommandozeilenhistorie und die Dateinamenvervollständigung zur Verfügung, so wie einige erweiterte zeileneditierungs Mechanismen. Es ist in die Bash einkompilliert. Standardmäßig wird "readline" konfiguriert in der Datei .inputrc in Ihrem Home-Verzeichnis. Die Bashvariable "INPUTRC" kann zum Überschreiben dieser benutzt werden. Zum Beispiel: In Red Hat 6, INPUTRC ist gesetzt auf /etc/inputrc in /etc/profile. Das bedeutet, daß die Zurücktaste, Entfernen, POS1 und Ende Tasten für jeden arbeiten.

Wenn die Bash einmal die systemweite Konfigurationsdatei gelesen hat, sieht sie nach einer persönlichen Konfigurationsdatei. Sie sucht in Ihrem Home-Verzeichnis nach .bash_profile, .bash_login und .profile. Dann führt es die erste aus, die sie findet. Wenn Sie das Verhalten der Bash für Sie selbst ändern möchten, ohne das es die anderen Benutzer beeinflußt, tun Sie es dort. Zum Beispiel: Viele Aplikationen benutzen Umgebungsvariablen um zu kontrollieren, wie sie arbeiten. Ich habe die Variable EDITOR auf vi gesetzt, so das ich vi im Midnight Commander (ein exzellenter Konsolendatei Manager) benutzen kann, anstatt des eigenen Editors.

11.2 Übungen

Die Grundelemente der Bash sind leicht zu lernen. Aber hören Sie dort nicht auf: Sie können so viel tiefer gehen. Suchen Sie immer nach besseren Möglichkeiten, Dinge zu tun.

Lesen Sie Shell-Scripte. Erforschen Sie Sachen, die Sie nicht verstehen.

11.3 Mehr Informationen


Nächste Vorhergehende Inhalt