Wo wird $PATH in OS X 10.6 Snow Leopard festgelegt?

Ich gebe echo $PATH in die Befehlszeile ein und erhalte

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Ich frage mich, wo dies eingestellt wird, da meine .bash_login Datei leer ist.

Ich bin besonders besorgt, dass nach der Installation von MacPorts eine Reihe von Junk in /opt installiert wurde. Ich glaube nicht, dass dieses Verzeichnis in einer normalen Mac OS X-Installation vorhanden ist.

Update: Danke an jtimberman für die Korrektur meiner echo $PATH Anweisung

Author: Community, 2009-11-11

8 answers

Wenn bash startet, liest es bei jeder Anmeldung die folgenden Dateien. Für die Zwecke von OS X bedeutet dies jedes Mal, wenn Sie ein neues Terminal Fenster öffnen.

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

Wenn Sie eine neue Shell starten, indem Sie bash in die Befehlszeile eingeben, lautet sie .bashrc

OS X verwendet auch~/.MacOSX/environment.plist so legen Sie bei Bedarf weitere Umgebungsvariablen fest, einschließlich Pfade.

Schließlich werden /etc/paths und /etc/paths.d auch von der Shell gelesen.


/opt/local/bin etc. werden in ~/.tcshrc von MacPorts hinzugefügt. Auch achten Sie darauf, in ~/.cshrc zu schauen.

 163
Author: Steve Folly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-20 07:50:44

Schauen Sie sich die Datei /etc/paths an, die von /usr/libexec/path_helper verwendet wird, die von /etc/profile verwendet wird.

Verwenden Sie für MacPorts sudo /etc/paths/opt/local/bin und öffnen Sie das Terminalfenster erneut.

 50
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-22 09:13:50

Im Ernst, Leopard gab uns einen neuen Weg, Pfad hinzuzufügen. Erstellen Sie einfach eine Datei mit dem Pfadteil, den Sie hinzufügen möchten, und fügen Sie sie in /etc/paths ein.d -

Ein kurzes Beispiel dafür in einem Schritt ist:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Andernfalls können Sie einfach zu /etc/paths gehen.d und legen Sie die Datei direkt dort ab. In jedem Fall werden alle Pfadteile in den Dateien in diesem Verzeichnis an den Standardpfad angehängt.

Dies funktioniert auch für manpath.

Hier ist ein link zu mehr details:

Ars technica: Wie füge ich dem PFAD in Snow Leopard etwas hinzu?

Auf einer zweiten Anmerkung: MacPorts legt alles in das opt-Verzeichnis, gerade weil es nicht von Apples Sachen verwendet wird. Auf diese Weise wird es nicht in Konflikt geraten. Ihr Leitfaden (übrigens hervorragend geschrieben) erklärt, warum opt verwendet wird und wie Sie diesen Standard ändern können, wenn Sie möchten.

MacPorts-Anleitung

 25
Author: leanne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-25 18:07:37

Um Ihren Pfad anzuzeigen, echo $PATH.

echo $PATH

Um Ihren Pfad festzulegen, bearbeiten Sie ~/.bash_profile, nicht ~/.bash_login.

 4
Author: jtimberman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-11-11 19:07:28

Es gibt auch den Pfad, der von ssh bestimmt wird.

Vergleiche echo $PATH mit ssh localhost 'echo $PATH'. Da ssh /etc / profile nicht liest, wird /usr/libexec/path_helper nicht ausgeführt und somit wird /etc/paths übersprungen. Versuchen Sie nun ssh localhost 'source /etc/profile; echo $PATH'. Die Wege sollten näher sein. Die verbleibenden Unterschiede werden wahrscheinlich auf Pfadänderungen in Ihrem zurückzuführen sein .bash_profile (das auch von ssh übersprungen wird) und .bashrc (das von ssh gelesen wird).

Wenn Sie möchten, dass Ihr ssh-Pfad Ihrem normalen Terminalpfad ähnelt, können Sie Folgendes hinzufügen source /etc/profile zu Ihrem .bashrc.

 4
Author: Keith Bentrup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-02-07 19:36:18

Es könnte entweder definiert werden in:

  • Systemvariablen - /etc/paths
  • Benutzervariablen-siehe @ Steve Folly ' s Erklärung
 2
Author: ericn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-06-01 09:50:21

Tatsächlich wird es in Ihrer .profile - Datei anstelle von .bash_login gespeichert und es ist üblich, dass MacPorts dies anstelle der .bash_login - Datei verwendet.

Auch das Verzeichnis /opt wird normalerweise von MacPorts erstellt und speichert seine Dateien in diesem Ordner.

 1
Author: ricbax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-11-11 19:13:39

In Bezug auf docs für das Dienstprogramm /usr/libexec/path_helper wurden die Anfangskomponenten für $PATH aus /etc/paths entnommen und sehen standardmäßig wie

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

Für OS-X-Snow-Leopard -

 1
Author: A B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:03