You were redirected from informatik:linux:lnxkub_konfigurationsdateien.

Konfigurationsdateien

Die Shell-Profildateien

Profildateien sind Konfigurationsdateien, die Einstellungen für die Shells vornehmen und Variablen, die für den Ablauf der Programme notwendig sind, setzen. Dabei muß zwischen globalen und benutzerspezifischen Profil-Dateien unterschieden werden. Darüberhinaus gibt es Profil-Dateien, die von allen verschiedenen Shells verwendet werden sowie Shell-spezifische Profildateien - und das jeweils als globale wie benutzerspezifische Variante. Also ein eher kompliziertes System, wo sich schnell Fehler einschleichen können :-(. Aber dem noch nicht genug, jenachdem wie man die Shell aufruft, gibt es Profildateien, die nicht eingelesen werden. Im nachfolgenden werden zuerst die Profildateien der wohl am meisten verwendeten Shell unter Linux besprochen, die bash.

Die globale Profil-Datei ist /etc/profile, die jedem Benutzer einen Satz an Konfigurationseinstellungen bereitstellt. Auf einem Gentoo-System enthält sie standardmäßig nicht viele Einstellungen, da für viele Variableneinstellungen (Pfad usw.) eine eigene Profildatei verwendet wird. Auf anderen Distributionen enthält sie häufig die verschiedensten Pfadeinstellungen, vom Suchpfad für ausführbare Dateien, Pfade für man- und info-Seiten, Javaeinstellungen, Spracheinstellungen usw. Bei einem Gentoo-System sind diese Einstellungen in der Profildatei /etc/profile.env untergebracht, die dynamisch über env-update aus den Dateien in /etc/env.d erzeugt wird. In diesem Verzeichnis sind die spezifische Einstellungen, je nach installierter Software, für das System hinterlegt. Die globale Profildatei /etc/profile includiert den Inhalt von /etc/profile.env und stellt sie somit zur Verfügung. Im weiteren Verlauf wird unter Gentoo, falls es sich die Shell bash handelt, die Bash-spezifische Konfigurationsdatei /etc/bash/bashrc in /etc/profile includiert. Sie enthält Konfigurationseinstellungen, die ggf. für andere Shells nicht zur Verfügung stehen.

Zusätzlich wird, falls vorhanden, noch die Datei /etc/bash_completion von /etc/bash/bashrc includiert.

Im Anschluß werden die benutzerspezifischen Konfigurationsdateien ~/.bash_profile, ~/.bash_login und ~/.profile eingelesen, in dieser Reihenfolge und nur dann, wenn sie vorhanden sind. Sie überschreiben oder erweitern jeweils die Einstellungen aus den globalen Einstellungen. Unter Gentoo includiert standardmäßig ~/.bash_profile die Datei ~/.bashrc, die anderen beiden Dateien ~/.bash_login und ~/.profile sind nicht vorhanden.

Wie man daran schon sieht, hängten die Konfigurationen auch z.B. von der verwendeten Distribution ab, wie sie dies implementiert haben. Leider macht hier jede Distribution ihr eigenes Süppchen, so daß man sich das entsprechende System daraufhin ersteinmal anschauen muß, wie dies dort implementiert wurde.

Dem nochnicht genug, jenachdem welcher Typ von Shell man aufruft, werden auch unterschiedliche Konfigurationsdateien gelesen. Ist die aufgerufene bash eine interaktive Login-Shell oder eine nicht-interaktive Login-Shell (d.h. mit der Option –login aufgerufen), wird die globale Profildatei /etc/profile (mit allen inkludierten gloablen Einstellungen), sowie die benutzerspezifischen Profildateien ~/.bash_profile, ~/.bash_login und ~/.profile aufgerufen. Dies kann durch die Option –noprofile verhindert werden.

Wird die bash als interaktive Shell, jedoch nicht als Login-Shell, aufgerufen, wird nur die benutzerspezifische Profildatei ~/.bashrc aufgerufen1). Über die Option –norc kann dies Verhalten deaktiviert werden, möchte man eine andere Profildatei laden, kann diese über –rcfile <file> angegeben werden.

Bei der Beendigung der bash als Login-Shell werden die Profildateien ~/.bash_logout und /etc/bash/bash_logout eingelesen und ausgeführt. Häufiger Verwendungszweck hierfür ist, den Bildschirm zu löschen, damit nachfolgende Benutzer nicht sehen, was man denn so gemacht hat. Jedoch kann man in diesen Dateien alles ausführen, was man möchte. Z.B. kann ein Benutzer in seiner benutzerspezifischen Datei ein Backup von Daten implementieren - so daß bei jedem Logout die Daten gesichert werden.

Noch eine weitere Besonderheit bei der bash und ihren Profildateien ist, daß sie sich beim Aufruf als sh (statt bash) anders verhält - so wie sich historische Versionen der sh verhalten haben, jedoch konform zum POSIX-Standard. In diesem Fall werden nur die Profildateien /etc/profile und ~/.profile in dieser Reihenfolge eingelesen.

In der globalen Profildatei wird häufig die Form

<variable> = <wert>
export <variable> 

verwendet. Hiermit wird zuerst einer Variablen ein Wert zugewiesen (möglich sind auch Substitutionsmechanismen) und anschließend die Variable als globale Variable exportiert. Häufiger finden Sie auch Programmierkonstrukte, um die Variablen speziell an Ihr System anpassen zu können. Z.B. wird der Variablen MANPATH zuerst ein Wert zugewiesen (eine Reihe von man-Verzeichnissen, einzelne Verzeichnisangaben werden durch einen Doppelpunkt getrennt) und anschließend eine for-Schleife durchlaufen, die weitere Verzeichnisse mit möglichen man-Seiten enthält und bei Existenz an die MANPATH-Variablen angehängt. Hiermit wird erreicht, daß spezielle Sprachversionen von man-Seiten verfügbar gemacht werden 2).

Die Variable PS1 ist für den normalen Prompt zuständig. Hier finden Sie bei manchen Distributionen ein ganzes Programmiersprachenkonstrukt, um den Prompt in Abhängigkeit der benutzten Shell sowie des Benutzers zu setzten. Für den Wert dieser Variablen ist eine Zeichenkette vorgesehen, die neben normalem Text die in Tabelle Zeichenkombinationen für den Prompt wiedergegebenen Zeichenkombinationen enthalten kann.

Tabelle: Zeichenkombinationen für den Prompt
Sonderzeichen Bedeutung
\t aktuelle Zeit im Format HH:MM:SS
\d aktuelles Datum im Format „Wochentag Monat Tag“
\w aktuelles Verzeichnis
\W letzter Teil des aktuellen Verzeichnisses
\u User-Name
\h Host-Name
\$ Promptzeichen ($ bzw. # für root)
\n Neuezeile-Zeichen
\s Name der Shell (Basisname von $0)
\# Nummer des aktuellen Kommandos
\! History-Nummer des aktuellen Kommandos
\nnn Zeichen mit oktalem Ascii-Code nnn
\\ Backslash
\[ Beginn für eine Reihe von nichtdruckbaren Zeichen
\] Ende einer Reihe von nichtdruckbaren Zeichen

Die beiden nachfolgenden Beispiele zeigen eine .profile-Datei, die beim Login interpretiert wird sowie die Datei .bash_logout, die von der bash beim logout ausgeführt wird.

# .profile
# Prompt setzen
export PS1="\h:\w\$ "
# Kurzbefehle definieren
alias win=startx
alias move=mv
alias copy=cp
# Loginmeldung ausgeben
echo "Hallo $USER, es ist jetzt ` date +"%A %d %B, %k Uhr $M"`  "
# Größe des Heimatverzeichnis ausgeben
echo "Dein Verzeichnis $HOME belegt ` du -sh`  "

Diese .profile-Datei setzt zuerst einen benutzerspezifischen Prompt, danach werden Kurzbefehle (Alias-Namen) definiert, z.B. daß das Verschieben von Dateien auch über das Kommando move erfolgen kann. Zum Schluß wird eine Loginmeldung mit Datum und Uhrzeit ausgegeben sowie die Größe des Heimatverzeichnisses.

# .bash_logout
# Bildschirm löschen
tput clear
# Sichern aller neuen oder geänderten Texte 
# vom Verzeichnis $HOME/text nach $HOME/text.bak
cp -u $HOME/text/*.* $HOME/text.bak
# Logoutmeldung ausgeben
echo "Hallo $USER, es ist jetzt ` date +"%A %d %B, %k Uhr $M"` . Auf Wiedersehen!" 

Durch diese .bash_logout wird beim logout nun zuerst der Bildschirm gelöscht, anschließend die veränderten Dateien des Verzeichnisses text unterhalb des Heimatverzeichnisses ins Verzeichnis text.bak gesichert. Anschließend wird eine Meldung ausgegeben.

Die Mount-Datei /etc/fstab

Diese Konfigurationsdatei gibt an, welche Datenträger in das Dateisystem aufgenommen werden sollen (siehe hierzu auch Kapitel Einbinden von Dateisystemen). Entweder werden sie automatisch beim Systemstart eingebunden oder können bei Angabe der Option noauto bequem über mount name eingebunden werden. Die Syntax sieht folgendermaßen aus:

<Gerätedatei> <Mount-Point> <Dateisystem> <Optionen> <Dump-Nr> <Prüf-Nr> 
Tabelle: einige mögliche Dateisysteme für mount und /etc/fstab
ext2 Linux ext2-Dateisystem
ext3 Linux ext3-Dateisystem mit journalling-Fähigkeiten
minix gebräuchlich für Unix-Disketten
msdos DOS-Partition
vfat DOS-Partition mit langen Dateinamen
iso9660 CD-ROM-Dateisystem
ntfs NT-Dateisystem (Schreibzugriff sehr gefährlich)
nfs Zugriff auf Verzeichnisse anderer Rechner via Netz
smbfs Zugriff auf Windows-Freigaben
proc Prozeßverwaltung
swap Swap-Partition oder -Datei
Tabelle: Die wichtigsten Optionen für /etc/fstab und mount
block=n Blockgröße (für CD-ROM n=2048)
conv=auto automatische Konversion von DOS-Textdateien (gefährlich)
default Voreinstellung
gid=n Gruppenzugehörigkeit der Dateien
noauto Datenträger wird nicht automatisch eingebunden
noexec keine Programmausführung erlaubt
ro Dateisystem Read-Only einbinden
sync Schreibzugriffe nicht puffern
uid=n Benutzerzugehörigkeit der Dateien
umask Zugriffsbits der Dateien
user jeder Benutzer darf (u)mount ausführen

Für die Gerätedatei muß der komplette Pfad angegeben werden (z.B. /dev/hda1) und der angegebene Mount-Point muß im Dateibaum als Verzeichnis vorhanden sein. Sollte dieses Verzeichnis nicht leer sein, werden die Daten im Verzeichnis überdeckt. Es besteht nur noch der Zugriff auf die eigentlichen Daten im eingebundenen Dateisystem. Wenn Verzeichnisse fremder Rechner via NFS eingebunden werden, lautet der Device-Name rechnername:/verzeichnis. Die möglichen Dateisysteme sind abhängig von der Kernelkonfiguration, es besteht nur die Unterstützung für die Dateisysteme, die im Kernel eingebunden oder als Modul verfügbar sind. Einige Dateisysteme sind in Tabelle Dateisystem für /etc/fstab und mount aufgeführt. Optionen sind vor allem für CD-ROM und Dateisysteme wie MS-DOS und OS/2 notwendig, die wichtigsten Optionen sind in Tabelle Tabelle: Die wichtigsten Optionen für /etc/fstab und mount wiedergegeben 3).

Die <Dump-Nr> enthält Informationen für das Programm dumpfs und wird zur Zeit ignoriert. <Prüf-Nr> gibt an, ob und wie die Dateisysteme auf Richtigkeit überprüft werden. Dabei sollte für das Wurzelverzeichnis 1 und für alle anderen veränderlichen Dateisystem 2 angegeben werden. Dateisysteme, die nicht überprüft werden sollen (z.B. CD-ROM, proc und swap), bekommen 0.

Das nachfolgende Listing zeigt eine etwas komplexere fstab-Datei. Neben den Linux-Partitionen, Swap-Partition und proc-Dateisystem wird beim Systemstart die Partition /dev/hda8 mit einem vfat-Dateisystem eingebunden. Die Gruppenzugehörigkeit wird auf Gruppe 100 gesetzt und der Besitzer aller Dateien und Verzeichnisse ist root (uid=0 ist auf jedem System der Benutzer root). Für den liberalen Zugriff werden die Dateirechte über umask=0002 auf Lesen, Schreiben und Ausführen für Besitzer und Gruppe gesetzt, alle anderen erhalten Lese- und Ausführrechte. Für das CD-ROM Laufwerk werden die Einträge vorbereitet, so daß jeder Benutzer mit (u)mount /cdrom das Laufwerk ein- und ausbinden kann. Beim Diskettenlaufwerk gibt es beim Dateisystemtyp eine Besonderheit, hier wird der Type auto eingestellt. Hier versucht Linux, den Dateisystemtyp selbstständig zu ermitteln, gerade bei DOS-Disketten mit langen Dateinamen schlägt dies jedoch fehl.

/dev/hda2  swap    swap    defaults                  0 0
/dev/hda3  /       ext2    defaults                  1 1
/dev/hda5  /usr    ext2    defaults                  1 2
/dev/hda1  /boot   ext2    defaults                  1 2
/dev/hda7  /home   ext2    defaults                  1 2
/dev/hda8  /daten  vfat    gid=100,umask=0002,uid=0  0 0
/dev/hdb   /cdrom  iso9660 ro,noauto,user,block=2048 0 0
/dev/fd0   /floppy auto    noauto,user               0 0
none       /proc   proc    defaults                  0 0 

Linux speichert in der Datei /etc/mtab eine Liste aller Datenträger, die momentan eingebunden sind und ändert diese dynamisch mit jedem mount- und umount-Befehl.

1) bei interaktiven Login-Shells wurde bei Gentoo diese Profildatei durch ~/.bash_profile inkludiert
2) Der Befehl man <Befehl> zeigt normalerweise immer nur die zuerst gefundene man-Seite an. Möchten Sie, daß zuerst deutsche Seiten angezeigt werden, sollten Sie den Pfad zu diesen Seiten direkt an erster Stelle von MANPATH eintragen.
3) Die komplete Optionsliste erhalten Sie mit man mount, weitere Informationen erhalten Sie auch mit man fstab
informatik/linux/lnxkub/lnxkub_konfigurationsdateien.txt · Zuletzt geändert: 14.11.2010 10:46 (Externe Bearbeitung)
Recent changes RSS feed Kontakt GPG-Schlüssel Get Firefox Driven by DokuWiki Valid CSS Valid XHTML 1.0