Konfiguration der Bash (1)

Bash-Kurs Teil 6

01.02.2001
Die elementaren Konfigurationsmöglichkeiten mit eingebauten Funktionen der Bash sind der Schwerpunkt dieses Teils. Im nächsten wird ein komfortables Tool zur Erzeugung von Konfigurationsdateien vorgestellt.

Ein Überblick

Die Bash bietet dem Anwender zahlreiche Möglichkeiten, ihr Verhalten an seine Wünsche anzupassen. Die meisten Einstellungen können zunächst einmal temporär – quasi "auf Probe" – in einer Sitzung vorgenommen werden. Haben sich die entsprechenden Einstellungen bewährt, dann empfiehlt es sich, sie in eine Konfigurationsdatei zu übernehmen, damit sie von nun an immer zur Verfügung stehen. Anders als viele andere Programme verwendet die Bash eine ganze Reihe von Konfigurationsdateien, die abhängig von der Einsatzweise ausgewertet werden.

Die Einstellungen der Shell durch Variablen in den Konfigurationsdateien und "on the fly" durch den Anwender werden oft mit dem etwas verwirrenden Begriff (Custom) "Environment" beschrieben. Dabei umfasst dies meistens die Readline-Einstellungen, Bash-Variablenzuweisungen und die ausgewählten Bash-Modi. Dieses Environment hat aber nichts mit der Programmumgebung zu tun, siehe dazu den Kasten. Bei der Bash müssen auch einige andere Begriffe streng unterschieden werden: Shelloptionen heißen die Optionen der Bash. Sie werden in den meisten Fällen durch die Bash-Modi (also verschiedene "Zustände" der Shell) repräsentiert. Ein einfaches Beispiel erklärt die Zusammenhänge: Der Editiermodus einer interaktiven Bash kann durch

$> set -o vi

in den vi-Modus bzw. durch

$> set -o emacs

zurück in den Emacs-Modus geschaltet werden.

Shellvariablen werden von der Bash intern ausgewertet. Die aus der Bash aufgerufenen Programme lesen und interpretieren die Umgebungsvariablen, die ihr Verhalten beeinflussen. Umgebungsvariablen sind in dem "Environment" gespeichert und werden an die von der Bash gestarteten Prozesse weitergegeben, sofern sie als "exportierbar" markiert wurden.

Es gibt aber eine Reihe von Umgebungsvariablen, die sinnvollerweise nur durch die Shell selbst ausgelesen und gesetzt werden sollten, etwa $PWD – der Name leitet sich vom eingebauten Befehl pwd (print working directory) ab und enthält das aktuelle Verzeichnis.

Die ursprüngliche Bedeutung des Begriffs Environment ist im Zusammenhang mit einer Shell aber eine andere: Als Environment wird die Gesamtheit der Umgebungsvariablen und einiger anderer Parameter wie der PID des Prozesses und die des aufrufenden Prozesses, das kontrollierende Terminal, etc. bezeichnet, wie sie beim Start eines Programms (in diesem Zusammenhang wird der Terminus Prozess verwendet) definiert sind.

Konfigurationsdateien

Beim Start liest die Bash eine Reihe von Konfigurationsdateien ein, interpretiert deren Inhalt und übernimmt bestimmte Einstellungen. Was dabei genau geschieht, hängt von mehreren Faktoren ab.

Zum einen kann die Bash in drei unterschiedlichen Weisen eingesetzt werden – bei jeder dieser Einsatzweisen liest die Shell andere Konfigurationsdateien ein; zum anderen werden jeweils mehrere Alternativen der Konfigurationsdateien gesucht. Die erste gefundene Datei wird dann eingelesen. Weitere werden nicht mehr gesucht.

  • Login-Shell: Von dieser Shell wird zunächst die Login-Konfigurationsdatei .bash_profile im Home-Verzeichnis des Anwenders gesucht. Ist sie vorhanden, führt die Bash die darin enthaltenen Befehle aus. Fehlt diese Datei, sucht die Bash im selben Verzeichnis nach einer Konfigurationsdatei mit dem Namen .bash_login. Fehlt auch diese, wird versucht, die systemweit gültige Konfigurationsdatei /etc/profile einzulesen und auszuwerten. Als letzte Möglichkeit versucht die Login-Bash, die Datei .profile im Home-Verzeichnis des Anwenders auszuführen.
  • Als interaktive (Sub) Shell: Eine interaktive Bash, also eine Shell, die im harten täglichen Einsatz von den Anwendern benutzt wird, benötigt oft spezielle Einstellungen. So werden hier oft Alias-Definition oder Funktionen für oft verwendete Befehle gewünscht. Die notwendige Konfiguration wird voreinstellungsgemäß in der Datei .bashrc (im Home-Verzeichnis des Anwenders) gesucht. ("rc" steht übrigens für "run commands" und kennzeichnet damit Skript-Dateien, die Shell-Befehle enthalten.)

Eine interaktive Bash verwendet für den Befehlszeileneditor zusätzlich die Einstellungen aus der Konfigurationsdatei .inputrc. Diese Datei wird zunächst im Home-Verzeichnis des Anwenders gesucht, ist sie dort nicht vorhanden, wird im Konfigurationsverzeichnis /etc/ nach der Datei inputrc gesucht.

  • Eine nicht interaktive (Sub-) Shell, wie sie zum Start von Skripten verwendet wird, liest keine Konfigurationsdateien ein, sofern dies nicht explizit gefordert wird.

Einige Versionen der Bash (z. B. die von SuSE Linux verwendete) suchen als interaktive Shell zunächst im Konfigurationsverzeichnis /etc/ nach systemweit gültigen Einstellungen in der Datei bash.bashrc. Diese ist aber normalerweise nicht vorhanden bzw. leer. Anschließend und unabhängig davon, ob diese Datei gefunden wurde, wird die persönliche Konfigurationsdatei .bashrc im Home-Verzeichnis des Anwenders eingelesen.

Damit bei einer Login-Shell auch Funktionen einer interaktiven Shell zur Verfügung stehen, wird am Ende der Login-Konfigurationsdatei oft auch die persönliche Konfigurationsdatei im Home-Verzeichnis des Anwenders eingelesen.

SuSE Linux löst die Konfiguration der Bash in folgender Weise: Die systemweite Konfiguration erfolgt in der Datei /etc/profile, an deren Ende weitere Konfigurationsdateien eingelesen werden:

…
test -e /etc/SuSEconfig/profile && . /etc/SuSEconfig/profile
…
test -d /etc/profile.d && \
  {
    for s in /etc/profile.d/*.sh ; do
      test -r $s && . $s
    done
  }
…
test -e /etc/profile.local && . /etc/profile.local

Einige Anmerkungen zu diesen Zeilen: Die bei der Installation erzeugten Konfigurationsdateien tragen alle den expliziten Hinweis, dass diese Dateien nicht manuell verändert werden sollen! Zum test-Befehl: Dieser wurde im letzten Teil vorgestellt, deshalb hier nur soviel: Mit der Option -d (directory) prüft der Befehl, ob das im folgenden Argument angegebene Verzeichnis existiert. Wenn ja, werden die folgenden Befehle ausgeführt. In diesem Verzeichnis sind für die spezielle Programmpakete benötigten Initialisierungs-Dateien vorhanden. Ähnlich verhält es sich bei der Option -r (read): Durch sie wird nach lesbaren Dateien (vorhanden und mit Leseberechtigung versehen) gesucht. Entsprechendes gilt für die Option -e (execute): Diese bewirkt den Test, ob die im Argument angegebene Datei ausführbar ist.

Befehle in der Datei /etc/profile sollen immer in einer zur "Ur"-Shell kompatiblen Syntax benutzt werden, da bei verschiedenen Shells die Grundkonfiguration über diese Datei erfolgt. Oft wird in dieser Datei daher nur ein minimales Environment definiert und die eigentliche Konfiguration in andere Dateien ausgelagert. Lokale (distributionsspezifische) Anpassungen werden gern in einer externen Datei vorgenommen, wie dies in dem Beispiel oben anhand der Datei /etc/profile.local gezeigt wurde.

Logout: Auch beim Verlassen der Shell können von der Bash noch automatisch Befehle ausgeführt werden. Das ist besonders praktisch, wenn man es sich zur Aufgabe macht, die Arbeiten des Tages zu sichern, Aufzuräumen (temporäre Dateien, Core-Dumps (Programmleichen) etc. zu löschen) oder vieles mehr. Die Bash führt beim Eintreffen eines exit-Befehls die Datei .bash_logout im Home-Verzeichnis des Anwenders aus. Nicht alle Versionen der Bash werten diese Datei korrekt aus.

Achtung: Beim Update des Systems sollten inzwischen alle Distributionen veränderte Konfigurationsdateien erkennen und unangetastet lassen. Bei Verwendung von rpm (Red Hat Package Manager) werden modifizierte Dateien mit der Endung .rpmsave oder .rpmorig versehen. Um jederzeit auf die persönlichen Einstellungen zugreifen zu können, ist es sinnvoll, wenn diese in einer speziellen Datei gespeichert werden. Unter SuSE Linux wird beispielsweise die automatische Auswertung der Datei ~/.alias durch die folgende Abfrage in .bashrc veranlasst:

test -e ~/.alias && . ~/.alias

Das Einlesen von Konfigurationsdateien kann beim Start der Bash durch die Befehlszeilenoptionen --noprofile und --norc unterbunden werden. Alternative Konfigurationsdateien können für die Bash als Argument der Option --rcfile angegeben werden.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Shell-Tipps
    Alte (Unix-) Hasen lieben sie, Linux-Ein- und Aufsteiger stehen ihr oft mindestens skeptisch bis ablehnend gegenüber: der Shell. Wie eine Muschelschale legt sie sich um die Perle (den Linux-Kernel) und regelt alle Kommunikation mit ihm. Dieses für viele unbekannte Wesen wollen wir in unserer neuen Reihe näher beleuchten und versuchen, Vorurteile abzubauen, sowie Ihnen einen Einblick in die Möglichkeiten dieser mächtigen Anwenderschnittstelle geben. fortgeschrittenere Shell-User seien an dieser Stelle aufgefordert, ihre Tipps und Tricks an uns zu schicken, so dass wir sie in dieser Serie weiter verbreiten können.
  • Bash-Konfiguration, die zweite
    In diesem zweiten Teil der Serie über die Konfiguration der Bash wird es noch einmal praktisch: Das Einstellen des Prompts, und die für die Fehlersuche so nützlichen Tracing-Modi werden beschrieben.
  • Die Bash, das unbekannte Wesen
    Es gibt neben den Pipes noch verschiedene andere Verfahren, um mehrere Shell-Befehle miteinander zu verbinden bzw. sie parallel auszuführen. Die wichtigsten Methoden werden in dieser Folge der Bash-Serie vorgestellt.
  • Konfigurationsdateien einfach erstellen
    Mit dem Dotfile-Generator steht ein komfortables Tool zur Erzeugung von Konfigurationsdateien für viele Standardtools unter Linux zur Verfügung.
  • Zu Befehl
    Allen grafischen Oberflächen zum Trotz saß manch einer schon leicht erschrocken vor seinem frisch installierten Linux, das ihm schweigend einen penetrant blinkenden Cursor präsentierte. Nicht, dass das böse Absicht des Computers wäre – Linux will nur hin und wieder in einer Sprache jenseits des Mausklicks unterhalten werden. Der Grundwortschatz dieser Sprache ist jedoch nicht allzu schwer zu erlernen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...