Alex Online Today

some experience to be shared

By

$PATH unter Mac OS X

Was ist $PATH
Die $PATH Variable definiert, in welchen Verzeichnissen ausführbare Dateien d.h. per Befehl ausführbare Programme, abgelegt sind, sowie die Reihenfolge in welcher diese Verzeichnisse nach ausführbaren Dateien durchsucht werden.
$PATH besteht aus Einträgen des Systems, die für alle Benutzer gleich sind (systemweit), sowie individuellen Benutzereinträgen (benutzerspezifisch).
Die $PATH Variable gibt es übrigens nicht nur unter OS X sondern auf quasi allen Unix und Linux Systemen und auch unter Windows. Die Funktion ist hierbei allgemein die Gleiche – nur wie und wo $PATH definiert wird ist unterschiedlich. Die folgende Anleitung beschreibt das Verhalten unter OS X 10.5 bis 10.8.

1. $PATH auslesen
Um $PATH zu auszulesen öffnet man ein Terminal Fenster (Spotlight –> “Terminal”) und gibt folgenden Befehl ein:

echo $PATH

Man erhält dann beispielsweise folgende Ausgabe:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/local/MacGPG2/bin:/usr/texbin

2. $PATH Syntax
Die Variable besteht aus einer Aneinanderreihung von Verzeichnispfaden, die durch einen Doppelpunkt “:” getrennt sind.
z.B. sind /usr/bin und /bin Standardverzeichnisse des Systems. Dort finden sich auch Programme wie “echo” -> wie wir es zur Anzeige von $PATH gerade verwendet haben. Wichtig ist folgendes – je früher ein Verzeichnis in $PATH auftaucht, desto höher ist seine Priorität.

Ein Beispiel:
Das Programm echo liegt standardmäßig im Verzeichnis /bin. Wird nun ein weiteres Programm mit dem Namen echo in /usr/local/bin abgelegt, so hat das Programm echo im Verzeichnis /bin immer vorrang, denn bei der Auführung wird beim Auffinden eines passenden Programms im $PATH die Suche abgebrochen. Wenn nun in Zukunft die Programme in /usr/local/bin vorrangig ausgeführt werden sollen, muss man $PATH ändern in etc/paths

3. $PATH systemweit anpassen
Seit Mac OS 10.5 Leopard wird $PATH durch das Programm /usr/libexec/path_helper verwaltet. path_helper wird durch /etc/profile beim Öffnen eines neuen Terminal Fensters ausgeführt.

1. Die Einträge der Datei /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

2. Die Einträge in allen Dateien im Verzeichnis /etc/paths.d/
– Hier hinterlegen häufig Frameworks ihre Pfad-Einträge, z.B. von git oder LaTex
– Diese Einträge werden in Alphabetischer Reihenfolge hinzugefügt
– Eine Datei muss mit einer leeren Zeile enden

Die Dateien sind für gewöhnlich schreibgeschützt und die Verzeichnisse versteckt. Am besten man arbeitet im Terminal:
a) Navigation zu den Ordnern:

> cd /bin

b) Editieren mit vim (sudo für root Rechte)

>sudo vi paths

Nütliche Befehle in vim sind:
i Editieren der aktuellen Zeile
dd Löschen der aktuellen Zeile
i und dd werden mit esc beendet.
:q! Beenden (explizit ohne Speichern der Änderungen)
:wq! Beenden und speichern einer readonly Datei

4. Benutzerdefinierte Einträge in $PATH
Vor dem Öffnen eines neuen Terminal Fensters werden werden die Datein .profile und .bash_profile (in dieser Reihenfolge) im Benutzerordner (~) des aktuellen Nutzers ausgeführt. Es handelt sich um versteckte Dateien (beginnend mit ‘.’) weshalb man sie normalerweise im Finder nicht sieht. Um sie im Terminal anzuzeigen geht man folgendermaßen vor:
a) Navigation zum Benutzerverzeichnis:

>cd ~

b) Anzeigen aller Dateien

> ls -a

Um die Dateien zu bearbeiten, nutzt man am besten wieder vim
c) Bearbeiten mit vim (ohne root Rechte)

vi .profile

In diesen Dateien kann durch den Eintrag

export PATH=$PATH:/newpath

die $PATH Variable für diesen Benutzer erweitert werden. Den bestehenden $PATH stellt man für gewöhnlich vorne an.

167,821 Responses to $PATH unter Mac OS X