7.9. Die Startdateien von Bash

Das Shell-Programm /bin/bash (im weiteren Verlauf nur „shell“ oder „bash“ genannt) benutzt einige Startdateien zum Einrichten der Benutzerumgebung. Jede Datei hat einen bestimmten Zweck und beeinflusst Login- und Interaktiv-Umgebungen unterschiedlich. Die Bash-Dateien in /etc enthalten globale Einstellungen. Wenn eine entsprechende Konfigurations-Datei auch im Persönlichen Ordner des Benutzers existiert, überschreibt sie die globalen Einstellungen.

Nach einem erfolgreichen Login wird mit /bin/login eine interaktive Login-Shell gestartet. Dazu wird die Datei /etc/passwd eingelesen. Eine interaktive nicht-Login-Shell wird von der Kommandozeile aus gestartet (z. B. [prompt]$/bin/bash). Eine nicht-interaktive Shell findet man üblicherweise bei laufenden Shell-Skripten. Sie ist nicht interaktiv, weil Sie ein Skript abarbeitet und zwischen den Kommandos nicht auf Eingaben vom Benutzer wartet.

Weitere Informationen finden Sie mit info bash im Abschnitt Bash Startup Files and Interactive Shells.

Die Dateien /etc/profile und ~/.bash_profile werden gelesen, wenn die Shell als interaktive Login-Shell aufgerufen wurde.

Die untenstehende Basisversion der Datei /etc/profile stellt ein paar notwendige Umgebungsvariablen für NLS-Unterstützung ein. Eine korrekte Einstellung dieser Variablen bewirkt:

Diese Datei setzt auch die Variable INPUTRC. Wenn diese Variable gesetzt ist, benutzen Bash und Readline die vorhin erzeugte Datei /etc/inputrc.

Ersetzen Sie [ll] mit dem zweistelligen Ländercode für die gewünschte Sprache (z. B. „de“) und [CC] mit dem zweistelligen Code für das gewünschte Land (z. B. „DE“ oder „AT“). [charmap] sollte durch den korrekten Zeichensatz ersetzt werden, z. B. „iso8859-15“.

Mit dem folgenden Kommando erhalten Sie eine Liste aller von Glibc unterstützten Locales:

locale -a

Locales haben häufig mehrere Synonyme. Z. B. wird „ISO-8859-1“ häufig auch als „iso8859-1“ und „iso88591“ geschrieben. Einige Programme können nicht mit den verschiedenen Synonymen umgehen, daher ist es das sicherste, den korrekten Namen für ein Locale anzugeben. Um den kanonischen Namen für ein Locale herauszufinden, führen Sie das folgende Programm aus, wobei [locale name] die Ausgabe von locale -a für Ihr bevorzugtes Locale ist (in diesem Beispiel de_DE.iso88591).

LC_ALL=[locale-Name] locale-Zeichensatz

Für das Locale „de_DE.iso88591“ ergibt das obige Kommando:

ISO-8859-1

Das endgültige Ergebnis lautet also „de_DE.ISO-8859-1“. Bevor Sie diese Locale-Einstellung allerdings in eine der Startdateien der Bash eintragen, sollten Sie sie testen:

LC_ALL=[locale-Name] locale country
LC_ALL=[locale-Name] locale language
LC_ALL=[locale-Name] locale charmap
LC_ALL=[locale-Name] locale int_curr_symbol
LC_ALL=[locale-Name] locale int_prefix

Das obige Kommando sollte Ihnen folgende Daten ausgeben: Land und Sprache, den vom Locale benutzten Zeichensatz, die Währung und den internationalen Telefonnumern-Prefix. Falls eines der Kommandos eine Fehlermeldung wie die folgende ausgibt, dann wurde die Locale in Kapitel 6 entweder nicht installiert, oder wird von der Standardinstallation von Glibc nicht unsterstützt.

locale: Cannot set LC_* to default locale: No such file or directory

If this happens, you should either install the desired locale using the localedef command, or consider choosing a different locale. Further instructions assume that there are no such error messages from Glibc.

Some packages beyond LFS may also lack support for your chosen locale. One example is the X library (part of the X Window System), which outputs the following error message:

Warning: locale not supported by Xlib, locale set to C

Sometimes it is possible to fix this by removing the charmap part of the locale specification, as long as that does not change the character map that Glibc associates with the locale (this can be checked by running the locale charmap command in both locales). For example, one would have to change "de_DE.ISO-8859-15@euro" to "de_DE@euro" in order to get this locale recognized by Xlib.

Other packages can also function incorrectly (but may not necessarily display any error messages) if the locale name does not meet their expectations. In those cases, investigating how other Linux distributions support your locale might provide some useful information.

Wenn Sie die korrekten Locale-Einstellungen herausgefunden haben, erstellen Sie die Datei /etc/profile:

cat > /etc/profile << "EOF"
# Begin /etc/profile

export LANG=[ll]_[CC].[charmap]
export INPUTRC=/etc/inputrc

# End /etc/profile
EOF
[Anmerkung]

Anmerkung

Die Locales „C“ (voreinstellung) und „en_US“ (empfohlen für englischsprachige Amerikaner) sind nicht identisch.

Das Einstellen von Tastaturlayout, Bildschirmschriften und Locales sind die einzigen notwendigen Schritte zur Internationalisierung, um Locales mit einfachen 1-Byte-Kodierungen und links-nach-rechts Schreibweise einzurichten. Komplexere Fälle (inklusive UTF-8-basierter Locales) erfordern weitere Schritte und Patches, weil viele Anwendungen dazu neigen, unter diesen Bedingungen nicht richtig zu funktionieren. Diese Schritte und Patches sind derzeit nicht Teil des LFS-Buches und diese Locales werden auch noch nicht von LFS unterstützt.