Skip to topic | Skip to bottom
Linux.BashFbr1.4 - 26 Jan 2005 - 14:35 - FrankBurkhardt [Zum Ende]

Start of topic | Direkt zum Menü

Pro-Host-Session-Konfiguration: bash-fb

Einleitung

Das Paket bash-fb entstand aus Bedürfnis herraus, Rechner in unterschiedlichen Netzwerken zentral zu konfigurieren. Dabei kam es vor allem darauf an, Benutzern eine konfigurierte, jedoch einheitliche Arbeitsumgebung zu präsentieren, wobei vor allem Umgebungsvariablen (teilweise mit Bedingungen) zu setzen waren. Ausserdem sollten bestimmte Aliases der bash einheitlich für alle Benutzer zur Verfügung stehen.

Früher kam dazu ein Satz Konfigurationsdateien beim Benutzer ( ~/.bashrc , ~/.profile , ...) zum Einsatz. Ziel war es, die Notwendigkeit dieser Benutzerspezifischen Files zu eliminieren, damit zentrale Änderungen an der Konfiguration möglich wurden - ohne sich auf jedem Rechner einzuloggen und (eigentlich Netzwerk- und nicht Rechnerspezifische) Einstellungen z.B. an /etc/bash.bashrc und /etc/profile durchzuführen.

Das Prinzip

Und so funktionierts prinzipiell:

  • Mit
    apt-get install bash-fb
    wird das Paket installiert. Per dpkg-divert ersetzt es die Dateien /etc/bash.bashrc und /etc/profile durch eigene Versionen.
  • /etc/bash.bashrc und /etc/profile dürfen nicht geändert werden. Alle Änderungen sollten direkt am jeweiligen Konfigurationsprofil / /etc/bash/preset/[Konfigurationscode].bashrc durchgeführt werden.
    Diese Dateien werden von Debian als Konfigurationsdateien verwaltet - bei einem
  • Das Skript install-bash-fb erkennt, in welchem Netzwerk der Computer ist und ordnet ihm einen Konfigurationscode zu.
    • Die Netzwerkkonfigurationen (IP und Netzmaske + Domainname) sind zusammen mit dem jeweiligen Konfigurationscode in /etc/bash/preset/presets zeilenweise gespeichert.
    • Ist das Netzwerk unbekannt, lautet der Code default .
    • Der Konfigurationscode wird als Zuweisung an die Umgebungsvariable $LOCALPROFILE in der Datei /etc/bash.bashrc gespeichert.
  • bash-fb schreibt ein einzu- source -ndes Skript nach /etc/X11/Xsession.d . Dadurch werden auch gestartete X-Sessions Konfiguriert.

Das passiert, wenn ein Benutzer (incl. root) eine Session ( ssh -Login, kdm -Login, Konsolen-Login, ...) startet:

  • /etc/bash.bashrc wird abgearbeitet.
    • Bei X-Sessions geschieht das durch das ein- source -en von /etc/X11/Xsession.d/10profile
    • Die Shell-Variable ( keine Umgebungsvariable - das ist wichtig! ) $SHPROFILE wird auf "1" gesetzt.
  • Das Profil, das dem aktuell eingestelltem Konfigurationscode entspricht, wird abgearbeitet (also /etc/bash/preset/[Konfigurationscode].bashrc ).
  • Die ~/.bashrc des Benutzers wird abgearbeitet. Der Benutzer kann in diesem File mit der Bedingung [ 1 = "$SHPROFILE" ] testen, ob gerade eine Session gestartet wird und ggf. gewünschte Kommandos ausführen.

Wann immer der Benutzer eine interaktive Shell öffnet (also z.B. eine Terminalemulation mit bash unter KDE oder auf während des eigentlichen Logins an der Konsole oder z.B. per ssh ), passiert folgendes:

  • /etc/bash.bashrc wird abgearbeitet
    • Die Shell-Variable ( keine Umgebungsvariable ) $SHINTERACTIVE wird auf "1" gesetzt.
  • Das Profil, das dem aktuell eingestelltem Konfigurationscode entspricht, wird abgearbeitet (also /etc/bash/preset/[Konfigurationscode].bashrc ).
  • Die ~/.bashrc des Benutzers wird abgearbeitet. Der Benutzer kann in diesem File mit der Bedingung [ 1 = "$SHINTERACTIVE" ] testen, ob gerade eine Session gestartet wird und ggf. z.B. Aliases setzen und Shell-Funktionen definieren.

Hinweis:

  • Wenn Sessionstart und Start der interaktiven Shell zusammenfallen, werden $SHINTERACTIVE und $SHPROFILE auf "1" gesetzt.
  • Benutzer können die gesammte Shell-Konfiguration in ~/.bashrc vornehmen - es gibt kein Kompetenzwirrwar mehr zwischen ~/.bashrc* und =~/.profile . Dadurch kann ~/.profile entfernt werden, wodurch die Mehrfachausführung des Skriptes wirkungsvoll unterbunden ist.
  • Wer eigene Konfigurationen in bash-fb untergebracht wissen will, darf sich gerne an mich wenden.

Problembehebung

Einloggen per Displaymanager (z.B. kdm ) geht nicht

Wenn man beim Einloggen per Displaymanager ( xdm , gdm , kdm , ...) direkt nach der Eingabe des Passwortes ohne irgendeine Fehlermeldung wieder beim Login-Dialog landet, kann das an bash-fb liegen.

Mögliche Ursachen:

Fehlerhafte Kommandos in den bash -Konfigurationsfiles des Benutzers

In ~/.bashrc oder ~/.profile stehen evtl. Kommandos, die nicht erfolgreich ausgeführt werden. Diese Befehle müssen raus bzw. muß deren Fehlerhafte Ausführung abgefangen werden.

Wenn man ein Kommando dringend braucht - z.B.

wichtiges_kommando wichtiger parameter

und dieses Kommando aber immer (oder gelegentlich) einen zu ignorierenden Fehler (Rückgabecode = 0) zurückliefert, kann man folgendes machen:

wichtiges_kommando wichter parameter || true

Braucht man es nicht, sollte man die Chance nutzen und die entsprechende Zeile 'rausschmeißen.

Beispiele für fehlerhaft Kommandos: (gefunden am MPI/CBS)

  • tset -I -Q
  • stty erase '^H'
  • source /usr/local/share/scripts/lipsia_init
  • set editing-mode vi

Die falsche Shell hat sich als /bin/sh eingetragen

Die ash hat z.B. die Angewohnheit, die bash ersetzen zu wollen, was sich in sehr merkwürdigen Fehlern ausdrückt. Wichtig ist nun, den Link /bin/sh so zu setzen, dass er auf die bash zeigt:

root@host > rm /bin/sh
root@host > ln -s bash /bin/sh
[Zurück zum Start]


Aktuelle Wiki-Seite: Linux > DebianProjekte > BashFb

[Zurück zum Start]