Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 3

Was ist ein Befehl?

Wir haben bereits erwähnt, daß UNIX eine enorme Anzahl an Befehlen kennt und daß Sie neue Befehle hinzufügen können. Dies unterscheidet UNIX erheblich von anderen Betriebssystemen, die nur einen begrenzten Befehlssatz haben. Was sind also UNIX-Befehle und wie werden sie gespeichert?

Unter UNIX ist ein Befehl einfach eine Datei. Der Befehl ls z.B. ist eine binäre Datei im Verzeichnis bin . Statt ls einzugeben, könnten Sie also auch den kompletten Pfadnamen eintippen (auch absoluter Pfadname genannt):

$ /bin/ls

Das verleiht UNIX Flexibilität und macht es zu einem mächtigen Betriebssystem. Ein Systemverwalter, der ein neues Utility bereitstellen möchte, kann dieses einfach in einem der Verzeichnisse installieren, in denen Befehle stehen. Es lassen sich auch verschiedene Versionen eines Befehls installieren -- etwa eine neue Version zu Testzwecken in einem bestimmten Verzeichnis, während die alte Version an einer anderen Stelle verbleibt. Die Benutzer können dann selbst entscheiden, mit welcher Version sie arbeiten möchten.

Hier ergibt sich häufig ein Problem: Manchmal geben Sie einen bekannten Befehl ein, aber das System antwortet mit einer Meldung wie »Not found«. Das Problem könnte darin liegen, daß der Befehl in einem Verzeichnis steht, das von der Shell nicht durchsucht wird. Man nennt die Liste aller Verzeichnisse, in denen die Shell nach Befehlen sucht, den Pfad (PATH). Mit folgendem Befehl können Sie Ihren Pfad anzeigen lassen (denken Sie an das Dollar-Zeichen!):

$  echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/lib/uucp:.

Hier müssen Sie genau hinschauen. Die Anzeige stellt eine Reihe von Pfadnamen dar, die durch Doppelpunkte getrennt sind. Der erste Pfadname in diesem Fall ist /usr/local/bin , der zweite /usr/bin usw. Wenn zwei Versionen eines Befehls vorhanden sind, die in /usr/local/bin und /usr/bin stehen, wird der Befehl in /usr /local/bin ausgeführt.

Der letzte Pfadname in diesem Beispiel ist einfach ein Punkt; dieser bezeichnet das aktuelle Verzeichnis. Anders als DOS durchsucht UNIX nicht automatisch das aktuelle Verzeichnis, sondern Sie müssen es ausdrücklich dazu anweisen -- so wie wir es hier gezeigt haben. Manche Leute halten das aus Gründen der Systemsicherheit für eine schlechte Idee. (Ein Cracker, der in Ihren Account eindringt, könnte ein bösartiges Programm in eines Ihrer Arbeitsverzeichnisse kopieren.)

Wenn ein Befehl nicht gefunden wird, müssen Sie herausfinden, wo im System er sich befindet, damit Sie das betreffende Verzeichnis in Ihren Pfad einfügen können. Die Man-Page sollte Ihnen sagen, wo der Befehl steht. Nehmen wir an, daß er sich im Verzeichnis /usr/sbin befindet, wo auch andere Befehle für die Systemverwaltung installiert sind. Ihnen ist klar, daß Sie Zugang zu den Befehlen für die Systemverwaltung brauchen, deshalb geben Sie folgendes ein (beachten Sie, daß das erste PATH ohne, das zweite dagegen mit einem Dollar-Zeichen geschrieben wird):

$  export PATH=$PATH:/usr/sbin

Damit wird /usr/sbin zu dem Verzeichnis, das als letztes durchsucht wird. Der Befehl heißt soviel wie: »Definiere meinen Pfad als den alten Pfad plus /usr/sbin «.

Der eben vorgestellte Befehl funktioniert übrigens nicht in allen Shells. Die meisten Linux-Benutzer, die mit einer Bourne-kompatiblen Shell wie bash arbeiten, sollten keine Probleme damit haben. Wenn Sie allerdings csh oder tcsh benutzen, müssen Sie statt dessen diesen Befehl eingeben:

set path = ( $PATH /usr/sbin )

Abschließend wollen wir noch auf ein paar Befehle hinweisen, die nicht als eigenständige Programm(dateien) existieren. cd ist einer davon. Die meisten dieser Befehle wirken sich auf die Shell selbst aus und müssen deshalb von der Shell verstanden und ausgeführt werden. Weil sie ein Teil der Shell sind, nennt man sie »interne Befehle« (built-in commands).


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt