Home / LinuxUser / 2003 / 03 / Konfiguration der Bash

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Immer gut in Schale

Konfiguration der Bash

Dateien über Dateien

Nachdem Sie die Einstellungen um /etc/inputrc bereits kennen gelernt haben, wollen wir uns mit weiteren Bash-Dateien beschäftigen. Die GNU-Shell besitzt eine ganze Reihe unterschiedlicher Konfigurationsdateien, die zu allem Überfluss unterschiedlich eingesetzt werden. SuSE, Red Hat und andere Distributionen spielen hier oft ihr eigenes Spiel.

Halten wir uns zunächst an das, was uns das Bash-Manual man bash mit seinen beinahe 5100 Zeilen verrät. Wenn Sie die Bash als Login-Shell starten, dann liest das Programm der Reihe nach folgende Konfigurationsdateien ein:

*

/etc/profile

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

Das führt uns zur Frage: Was macht eine Bash zur Login-Shell? Nachdem Sie sich auf der Textkonsole angemeldet haben, befinden Sie sich bereits in einer solchen Shell. Die Bash hat aus den oben angeführten vier Dateien die Befehle gelesen und sie bei Ihrem Login ausgeführt.

Einträge darin haben Sinn, wenn Sie beispielsweise Umgebungsvariablen festlegen möchten. Für diesen Zweck bieten sich die globale Datei /etc/profile oder die lokale ~/.profile an, die allerdings erst gelesen wird, wenn die Shell keine ~/.bash_profile findet. Die Login-Shell vererbt ihre Einstellungen an die ihr nachfolgenden Shells und konserviert damit die festgelegte Umgebung.

Etwas undurchsichtiger wird die Situation, wenn Sie sich statt in der Textkonsole mit einem Display-Manager anmelden. Ob auf der grafischen Oberfläche des Desktops ein xterm mit der Bash als Login-Shell läuft, hängt unter anderem von den Einstellungen des Window Managers ab, mit dem Sie X-Programme starten.

Der sicherste Weg, um an eine Login-Shell zu kommen, ist der Aufruf eines Xterms mit der Option -ls. Änderungen, die Sie während der Laufzeit der Shell an der Konfiguration durchführen, werden natürlich erst wirksam, nachdem Sie die Datei mit dem Aufruf source erneut einlesen. Das geht beispielsweise so:

[root] # source /etc/profile

Das gilt freilich nicht unter X, wenn in einer Terminal-Emulation noch eine Shell offen steht. Sie bleibt von der neuen Konfiguration unberührt und arbeitet weiterhin mit den alten Einstellungen. Der sicherste Weg ist, die grafische Oberfläche zu verlassen, um sich danach erneut einzuloggen.

Automatisierte Anweisungen wie das Löschen von Backup-Dateien, die die Bash beim Ausloggen ausführen soll, gehören übrigens in die Datei ~/.bash_logout. So viel zur Login-Shell, deren Möglichkeiten sich hiermit zwar nicht erschöpfen, aber den Rahmen dieses Artikels sprengen.

Sie werden es erraten haben: Es gibt auch Nicht-Login-Shells. Anweisungen für diese Art der Bash sollten normalerweise in die Datei ~/.bashrc geschrieben werden. Allerdings darf man sich darauf nicht verlassen, da viele Distributionen die Datei auch bei Login-Shells einlesen.

Vermutlich ist die Bash bereits durch die Konfiguration als Login-Shell so gut eingerichtet, dass weitere Einstellungen in ~/.bashrc nicht zwingend notwendig sind. Und nun beginnt das Verwirrspiel der Distributoren, das wir am Beispiel der Nürnberger SuSE festmachen.

Bereits im Kopf der /etc/profile werden Sie vom Distributor darauf hingewiesen, diese Datei nicht zu editieren. Von Ihnen gestaltete, globale Einstellungen müssen Sie in die Datei /etc/profile.local schreiben. Der Hintergrund ist, dass /etc/profile durch ein System-Update oder die Arbeit mit dem SuSE-eigenen Tool YaST überschrieben werden kann.

Aber damit nicht genug: In /etc/profile werden zudem die Dateien /etc/profile.dos, /etc/SuSEconfig/profile und alle Dateien im Verzeichnis /etc/profile.d eingelesen.

Daher ist dem unerfahrenen Anwender nur zu raten, die Finger von diesen Dateien zu lassen. Mit der Zeit und einiger Erfahrung können diese Strukturen aufgebrochen und klarer geordnet werden.

Variablen und Umgebungen

Bisher haben wir uns mit den Dateien der Konfiguration beschäftigt. Nun ist es an der Zeit, dass wir uns deren Inhalt genauer ansehen. Ein Funktion, die der Anwender häufig setzt, ist der alias. Mit alias definieren Sie ein Kommando, um eine umfangreiche Eingabe abzukürzen:

[andreas]~ > alias gnus='xemacs -nw -f gnus'

Mit dem obigen Befehl erstellen Sie die Abkürzung gnus, mit der Sie ohne viel Tipperei den Newsreader Gnus in der Textkonsole starten. Selbstverständlich dürfen sie verschiedene Kommandos, durch Strichpunkte getrennt, zu einem Befehl zusammenfassen:

[andreas]~ > alias unmount='cd;umount /media/cdrom;eject'

Ein unmount in der Kommandozeile führt ab jetzt dazu, dass Sie ins Home-Verzeichnis wechseln (cd). Danach wird das Medium im CD-ROM-Laufwerk ausgehängt (umount /media/cdrom) und die CD ausgeworfen (eject).

Verzichten müssen Sie auf ein alias, das Sie auf die Parameter eines Programmes anwenden:

[andreas]~ > alias option='-fn lucidasanstypewriter-14'
[andreas]~ > xterm option
xterm:  bad command line option "option"

Da dieser Versuch einer Alias-Belegung nicht funktioniert, löschen wir die entsprechende Abkürzung:

[andreas]~ > unalias option

Ein alleinstehendes alias zeigt eine alphabetisch geordnete Liste der Eingabekürzel. Da wir kein alias option=... darunter finden, haben wir es erfolgreich getilgt:

[andreas]~ > alias
alias newart='vim ~/work/artikel/newart.txt'
alias nhol='sudo /usr/local/sbin/fetchnews -vvv'
alias o='less'
alias rd='rmdir'

Um den entsprechenden Abkürzungen Dauer zu verleihen, tragen Sie sie in ~/.bashrc oder ~/.profile ein.

Weiter oben haben wir die Umgebungsvariablen bereits angeschnitten. Die Variablen werden an Kommandos und Programme weitergegeben und bilden deren Umgebung, in der sie bestimmte Werte finden, wie beispielsweise den Standard-News-Server. Was das bedeutet, wollen wir uns anhand eines Beispiels klar machen.

In Mutt, einem Mail-Programm für die Textkonsole, schreiben Sie Ihre Nachrichten mit einem externen Editor. Der Mailer zieht die Information, welches Ihr Standard-Editor ist, unter anderem aus der Variablen EDITOR. Sie können selbst nachsehen, welcher Wert dort zugewiesen wurde:

[andreas]~ > echo $EDITOR
/usr/bin/vim

Weitere wichtige Umgebungsvariablen sind PATH und MANPATH. PATH enthält den Suchpfad aller ausführbaren Dateien. Sobald Sie in der Bash ein Programm aufrufen, durchsucht die Shell die Verzeichnisliste der Variable nach dem Befehl. Sobald sie den gewünschten Eintrag gefunden hat, bricht sie die Suche ab und führt das Kommando aus.

Es ist also nicht gleichgültig, wo sich ein Verzeichnis in PATH befindet. MANPATH hingegen reiht die Pfade zu den Manual-Seiten auf. Wenn Sie jetzt neugierig geworden sind, liefern Ihnen die Kommandos export und printenv eine schier unendliche Liste der Umgebungsvariablen.

Abbildung 3: Ein Prompt bekennt Farbe

Es ist nicht schwer, Umgebungsvariablen in eigener Regie zu erstellen. In der Regel kommt dabei der Befehl export zum Einsatz. Unseren Testballon starten wir mit der Variable PS1. Sie beinhaltet die Zeichenkette zur Prompt-Einstellung. Der Prompt, auch Eingabeaufforderung genannt, ist der Teil der Kommandozeile, hinter dem Sie Ihre Befehle tippen. Auch er kann Sie mit nützlichem Hintergrund versorgen:

[andreas]~ > export PS1='\u um \t auf \h in \w \$ '
andreas um 09:29:02 auf comone in ~ $

Wie Sie sehen, hat unser Prompt die Form geändert. Das \u bildet den User-Namen ab, \t zeigt die aktuelle 24-Stunden-Zeit, \h informiert über den Rechnernamen, \w steht für das aktuelle Verzeichnis, und \$ ist der Prompt-Abschluss. Wem das zu unübersichtlich ist, der beschränkt sich auf den User-Namen und hebt ihn farbig hervor. Um diese Aufgabe zu meistern, bedienen wir uns des Escape-Zeichens \e und so genannten Escape-Sequenzen:

[andreas]~ > export PS1='\e[32m\u\e[0m \$ '

Das Ergebnis ist ein grüner Prompt, mit dem Sie auch in einer dicht beschriebenen Bash den Durchblick behalten. Umfangreiches Material zum Thema Escape-Sequenzen entdecken Sie im Archiv der Schwesterzeitschrift Linux-Magazin [1] oder mit dem Befehl man console_code.

Tragen Sie nun die Eingabeaufforderung, die Ihnen gefällt, beispielsweise in die Dateien /etc/profile oder ~/.bash_profile ein, um sie ständig zur Verfügung zu haben:

PS1='\w \$'
export PS1

Sie sehen: Die Bash ist kein Mysterium oder Hacker-Tool, sondern ein flexibles Programm, um den Alltag am Computer mit Komfort zu meistern.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...