Titel: EasyLinux 07/2004: Bash konfigurieren
Pfad: http://www.easylinux.de/Artikel/ausgabe/2004/07/082-bash/index_html


Shell konfigurieren

Schleichwege

von Elisabeth Bauer


Wie jedes andere Programm lässt sich auch die Shell individuell anpassen. Wir erklären, wie Sie die Konfiguration bearbeiten und Shortcuts für häufig gebrauchte Kommandos anlegen.

Wer seine ersten Schritte in der Shell unternimmt, stellt irgendwann ganz automatisch die Fragen: Wo kommen die Kommandos, die ich hier eingebe, eigentlich her? Wie findet die Shell Befehle? Dahinter steckt keine Magie, sondern nur ein paar schlichte Textdateien mit Befehlen und so genannten Umgebungsvariablen.

Eine solche Variable ist ein Schlüsselwort, dem Sie einen bestimmten Wert zuweisen. Das geht in der Shell sehr einfach. Geben Sie zum Beispiel

obst="apfel, birne, trauben"

ein, setzen Sie damit eine Variable namens obst. Mit dem Befehl echo erfahren Sie den Wert der Variable -- um dem Befehl mitzuteilen, dass Sie eine Variable meinen und kein beliebiges Wort, stellen Sie der Variable ein Dollarzeichen voran:

> echo $obst
apfel, birne, trauben

Geben Sie stattdessen nur echo obst ein, macht der Befehl seinem Namen alle Ehre und gibt als Antwort obst zurück.

Genauso wie Sie gerade die Variable obst gefüllt haben, setzt Linux, wenn Sie sich anmelden, Umgebungsvariablen. Die wichtigste darunter ist der Suchpfad für Programme, die Variable PATH. Mit

echo $PATH

geben Sie sie in der Shell aus. Im Suchpfad stehen, mit Doppelpunkten getrennt, alle Verzeichnisse, in denen die Shell nach Befehlen und Programmen sucht. Das hat den Vorteil, dass Sie Programme nicht mit ihrem vollen Pfad aufrufen müssen -- stattdessen genügt zum Beispiel ein kurzes cp zum Kopieren. Antwortet die Shell auf ein Kommando, das Sie eingeben, nur mit "command not found", kann das mehrere Ursachen haben: Das Programm ist gar nicht installiert oder Sie haben sich vertippt und ein Programm mit diesem Namen gibt es gar nicht. Möglicherweise schlummert es aber auch bereits auf Ihrer Festplatte in einem Verzeichnis, das nicht im Suchpfad eingetragen ist.

Wer so etwas korrigieren will oder den Pfad um eigene Verzeichnisse, zum Beispiel mit selbst geschriebenen Skripten, erweitern will, ändert sein persönliches Shell-Profil. Öffnen Sie dazu die versteckte Datei .bash_profile bzw. unter SuSE Linux .profile in Ihrem Home-Verzeichnis mit

kwrite $HOME/.bash_profile

bzw.

kwrite $HOME/.profile

unter SuSE Linux. Statt $HOME könnten Sie auch /home/benutzername schreiben -- $HOME ist eine weitere Umgebungsvariable, die Ihr Home-Verzeichnis enthält. Mandrake- und Red-Hat-Nutzer finden in dieser Datei bereits folgende zwei Zeilen:

PATH=$PATH:$HOME/bin
export PATH

Red-Hat-Nutzer ergänzen nun im Text-Editor beispielsweise drei Programmverzeichnisse, die der Distributor unterschlagen hat. Dazu ändern Sie die mit "PATH" beginnende Zeile so ab (Abbildung 1):

PATH=/sbin:/usr/sbin:/usr/games:$PATH:$HOME/bin

Abb. 1: In der Datei ".bash_profile" ergänzen Red-Hat-Nutzer den Suchpfad für Programme um weitere Verzeichnisse.

Da Sie den Pfad nicht komplett neu setzen, sondern nur erweitern wollen, steht in der Mitte die Variable $PATH, die die Shell durch den bisherigen Pfad ersetzt. Die Shell durchsucht die Verzeichnisse in der Reihenfolge, in der sie im Pfad stehen. Systemverzeichnisse sollten aus Sicherheitsgründen deshalb immer vor einem eventuellen persönlichen Programmverzeichnis $HOME/bin kommen: Liegt dort ein Programm mit demselben Namen wie ein vom Distributor installiertes Tool (oder hat jemand böswillig eines dort gespeichert), ruft die Shell das systemeigene Programm auf.

Der Befehl export sorgt anschließend dafür, dass die Pfadeinstellung nicht nur in der Shell gilt, die das Profil liest, sondern auch an Programme weitergegeben wird, die Sie in der Shell starten.

Speichern Sie die geänderte Datei und melden Sie sich neu an -- beim nächsten Login liest das System Ihre Profil-Datei und setzt den neuen Pfad. Das kontrollieren Sie wieder mit echo $PATH: Dort tauchen nun die drei zusätzlichen Verzeichnisse auf, die wichtige Systemprogramme und Spiele enthalten, wenn Sie welche installiert haben.

Dass der Distributor oder ein Programm, das Sie installieren, den Programmsuchpfad falsch setzt, passiert manchmal. Auf diese Weise korrigieren Sie das in Ihrem persönlichen Profil.

Neben PATH kennt die Shell noch zahlreiche andere, seltener gebrauchte Umgebungsvariablen. Der Befehl env zeigt die gerade aktiven an.

Unter anderem Namen

Die Einstellungen, die Sie im Profil vornehmen, gelten für Ihre komplette Arbeitsumgebung, also auch für Skripte und grafische Programme. Daneben kennt die Shell noch eine zweite Konfigurationsdatei, die unter allen Distributionen .bashrc heißt. Im Unterschied zum Profil, das nur einmal, nämlich beim Login gelesen wird, wird diese von jedem Shell-Fenster, das Sie öffnen, neu eingelesen. Diese Datei ist der richtige Ort für praktische Abkürzungen, mit denen Sie sich die Arbeit vereinfachen.

Eine Abkürzung definieren Sie mit dem Befehl alias. Der Aufruf folgt dem Muster alias name=befehl. Wer sich noch an DOS-Zeiten erinnert und oft aus Versehen dir statt ls tippt, setzt dafür einfach ein Alias. Geben Sie dazu

alias dir=ls

ein. dir zeigt ab sofort den Inhalt des aktuellen Verzeichnisses an.

In Terminal eingegebene Aliase vergisst die Shell, wenn Sie sie schließen. Um ein Alias dauerhaft zu setzen, öffen Sie mit kwrite $HOME/.bashrc die Einstellungsdatei und tragen das gewünschte Alias dort in der letzten Zeile ein. Speichern Sie die Datei und öffnen Sie einen weiteren Reiter in der Konsole (starten damit also einen neuen Shell-Prozess), können Sie dort das neue Alias schon benutzen. Rufen Sie alias ohne weitere Argumente auf, gibt die Shell alle definierten Aliase aus.

Beliebte Aliase, die auch mancher Distributor standardmäßig setzt, sind:

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

Damit weisen Sie die Befehle zum Kopieren (cp), Verschieben (mv) und Löschen (rm) an, für jede Datei nachzufragen (-i für "interaktiv") -- so löscht man nicht so schnell aus Versehen Dateien, die man eigentlich noch behalten wollte. (Beim Kopieren und Verschieben fragen die jeweiligen Befehle nur nach Erlaubnis, wenn die Aktion eine bereits vorhandene Zieldatei überschreiben würde.)

Wollen Sie die Nachfrage im Einzelfall abschalten, beispielsweise, weil Sie nicht einen riesigen Berg von Anfragen beantworten wollen, erreichen Sie das mit dem Befehl unalias aliasname. Wenn Sie nun cp eingeben, benutzt die Shell wieder den Befehl ohne die Option -i. Prinzipiell können Sie jeden Befehl direkt mit vollem Pfad aufrufen -- auch so umgehen Sie ein Alias, das den gleichen Namen wie ein Befehl hat.

So praktisch diese drei Klassiker auch sind, warnen doch viele vor ihrem Einsatz: Wer sich an die Bestätigung gewöhnt hat, erlebt beispielsweise auf einem frisch installierten, noch unkonfigurierten System leicht unangenehme Überraschungen, wenn er sich auf die Nachfrage verlässt.

Schneller packen

Ungefährlicher sind zwei Aliase zum Komprimieren und Entpacken von Tar-Archiven (siehe Artikel auf Seite ##):

alias tx='tar xzvf'
alias tc='tar czvf'

Haben Sie diese Zeilen in .bashrc eingetragen, entpacken Sie ein Tar-Archiv mit dem Kurzbefehl

tx archiv.tar.gz

Zum Einpacken und gleichzeitigem Komprimieren tippen Sie

tc archivname.tgz verzeichnis

Grundsätzlich eignet sich jeder lange Befehl, den Sie oft benutzen aber sich schlecht merken können, als Alias. In ein Alias verpacken Sie auch mehrere, etwa durch eine Pipe verbundene Befehle:

alias pss='ps aux | grep'

Aufgerufen mit pss programmname, gibt dieses Alias alle laufenden Prozesse aus, die programname enthalten. Über die Prozess-ID in der zweiten Spalte können Sie ein Programm, das sich aufgehängt hat, mit dem Befehl kill schnell beenden. Dazu geben Sie anschließend

kill Prozess-ID

ein.

Gut kommentiert

Ein Alias ist schnell eingetragen -- damit Sie aber auch ein paar Wochen später noch wissen, was es tut, empfiehlt es sich, Einträge in den Einstellungsdateien zu kommentieren. Setzen Sie am Anfang einer Zeile eine Raute (#), überliest die Shell den folgenden Text. Am Ende könnte Ihre .bashrc-Datei aussehen wie in Abbildung 2. (eba/hge)

Abb. 2: Praktische Aliase vereinfachen die Arbeit in der Shell.

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.


Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 17:16