Inhalt

Ankündigungen
Neuigkeiten
RBG
Dienstleistungen
GZI
Rechnernutzung
·Allgemeines zum Einstieg
·Unix und die Arbeitsumgebung
-Externer Zugang über ssh
-Umgang mit Ressourcen
-Druckdienste nutzen
-Unix-Gruppen
-Die bash und $PATH
-unlöschbare .nfsXXX-Dateien
-<defunct>-Prozesse
·E-Mail
MitarbeiterInnen
Nützliche Links


Die Shell bash und der Suchpfad $PATH

Die Shell (oder auf Deutsch Kommandozeile) bash ist ein Programm, das dem Benutzer die Interaktion mit dem Rechner, insbesondere das Absetzen von Kommandos, das Aufrufen von Anwendungsprogrammen und die Einstellung der Arbeitsumgebung ermöglicht. Neben der bash gibt es noch weitere Shells, aber durch die Verbreitung von GNU/Linux wird die bash mittlerweile am häufigsten verwendet.

Was passiert beim Absetzen eines Kommandos?

Wenn Sie ein Kommando der Form kommando arg1 arg2 arg3 auf der Shell absetzen, dann sucht die Shell nach einem Programm mit dem Namen kommando, ruft es auf und übergibt ihm dabei die Parameter arg1, arg2, und arg3.

Falls Sie zum Beispiel das Kommando ls /tmp aufgerufen, dann wird ein Programm namens ls aufrufen und ihm der Parameter /tmp übergeben.

Wo findet die Shell die aufzurufenden Programme?

Es gibt eine Shell-Variable $PATH, in der Unterverzeichnisse angegeben sind, in denen die Shell nach Befehlen sucht. Man kann sich diese Variable wie folgt ausgeben lassen:

echo $PATH
/usr/local/bin:/usr/bin:/bin

Bei Ihnen kann die Belegung der Variablen anders sein.

Wie ruft man Programme auf, die nicht über die $PATH-Variable erreichbar sind?

In diesem Fall gibt man den kompletten Pfad zu dem Programm an, z.B. /opt/ooffice-2.1/program/soffice.

Programme aus dem aktuellen Verzeichnis ruft man über ./hello auf.

Wie nimmt man weitere Verzeichnisse in den Pfad auf?

Die Pfadvariable wird typischerweise in der Konfigurationsdatei .bashrc gesetzt. Man kann ihr auf folgende Weise weitere Verzeichnisse hinzufügen:

PATH=$PATH:/opt/ooffice-2.1/program/soffice

Achtung: Geht dabei etwas schief, kann man sich ggf. nicht mehr einloggen oder keine Programme mehr ausführen. Daher läßt man nach der Änderung der $PATH-Variable immer den betreffenden Editor offen und versucht sich auf einer anderen Maschine erneut einzuloggen und dort Programme auszuführen. Wenn dies nicht gelingt, kann man die Änderungen im Editor wieder rückgängig machen. Niemals sollte man sich ausloggen, bevor die $PATH-Variable wieder in Ordnung ist. Insbesondere wird ein Neustart der Sitzung die .bashrc nicht auf magische Weise wiederherstellen, sondern typischerweise dazu führen daß man sich selbst ausgesperrt hat.

Warum darf ich mir keine .bashrc von einem anderen Benutzer kopieren?

Der andere Benutzer könnte Pfadkomponenten gesetzt haben, die auf sein eigenes Homeverzeichnis verweisen. Das kann dazu führen, daß
  • der andere Benutzer Ihnen Programme mit Schadcode unterschiebt, und/oder
  • Sie sich nicht mehr einloggen können, wenn der Account des anderen Benutzers gelöscht wird.

Warum darf ich den Punkt (.) nicht in den Pfad aufnehmen?

Wenn man viel programmiert, ist es lästig, seine eigenen Programme via ./hallo aufzurufen. Manchmal findet man daher den schlechten Tip, den Punkt (.) in den Pfad aufzunehmen.

Dies ist eine sehr schlechte Idee, da die Shell Programme aus dem jeweils aktuellen Verzeichnis ausführt. Wenn Sie sich in einem weltschreibbaren Verzeichnis wie z.B. /tmp befinden, könnte dort jemand ein Programm "ls" hinlegen, das Ihr Homeverzeichnis löscht, sobald Sie ls dort eingeben.

Dann stelle ich den Punkt an das Ende des Pfades!

Auch das hilft nicht, wenn Sie sich bei der Eingabe eines Befehls vertippen (z.B. mkae statt make). In diesem Fall wird wieder versucht, ein Programm mkae aus dem aktuellen Verzeichnis auszuführen, wobei unter Umständen Schadcode ausgeführt wird.

Was soll ich dann tun?

Erstellen Sie in Ihrem Arbeitsverzeichnis eine Ablage ~/bin für fertige Programme und eine weitere Ablage ~/work zum Programmieren und nehmen Sie diese in Ihren Pfad auf:

PATH=$PATH:~/bin:~/work

© 2011-2012 Universität Bielefeld       Verantwortliche Person: Dr. C. Gnörlich       Impressum