Ich tippe echo $PATH
auf der Kommandozeile und bekomme
/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 ein Haufen Junk-In installiert wurde /opt
. Ich glaube nicht, dass dieses Verzeichnis in einer normalen Mac OS X-Installation existiert.
Update: Danke an jtimberman für die Korrektur meiner echo $PATH
Aussage
macos
command-line
osx-snow-leopard
bash
path
Andrew
quelle
quelle
easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit
/etc/paths
. While the new
/etc/paths.d/
thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
/etc/paths.d
nützlich für Installationsskripte zu sein. Wenn mein Installationsskript das installierte Programm zum Pfad hinzufügen soll, kann ich eine Datei darin ablegen/etc/paths.d
. Wenn ich den Pfad manuell bearbeiten möchte,/etc/paths
ist dies eine bessere Option.Antworten:
Beim
bash
Start werden bei jeder Anmeldung die folgenden Dateien gelesen. Für OS X bedeutet dies jedes Mal, wenn Sie ein neuesTerminal
Fenster öffnen .Wenn Sie eine neue Shell durch Eingabe
bash
in die Befehlszeile starten , lautet sie.bashrc
In OS X werden außerdem
~/.MacOSX/environment.plist
weitere Umgebungsvariablen festgelegt, einschließlich Pfade, falls erforderlich.Schließlich
/etc/paths
und/etc/paths.d
werden auch von der Shell gelesen./opt/local/bin
etc. werden~/.tcshrc
von MacPorts hinzugefügt . Schauen Sie auch unbedingt rein~/.cshrc
.quelle
~/.MacOSX/environment.plist
funktioniert das bei manchen Leuten nicht. In Pfad für OS X ändern wird eine Alternative unter Verwendung des Ordners/etc/paths.d
beschrieben. Ich habe das nicht getestet.~/.cshrc
. War verrückt, um herauszufinden, warum~/.profile
es nicht funktionierte..bashrc
wird gelesen, egal ob Sie tippenbash
oder nicht.Schauen Sie sich die Datei an
/etc/paths
, die von verwendet wird/usr/libexec/path_helper
, die von verwendet wird/etc/profile
.Verwenden Sie für MacPorts
sudo /etc/paths/opt/local/bin
das Terminalfenster und öffnen Sie es erneut.quelle
Im Ernst, Leopard gab uns einen neuen Weg, um Pfad hinzuzufügen. Erstellen Sie einfach eine Datei mit dem Pfadteil, den Sie hinzufügen möchten, und fügen Sie ihn in /etc/paths.d ein
Ein kurzes Beispiel dafür in einem Schritt ist:
Andernfalls können Sie einfach zu /etc/paths.d gehen und die Datei direkt dort ablegen. In beiden Fällen 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 weiteren Details:
ars technica: wie füge ich PATH in snow leopard etwas hinzu?
Zum Zweiten: MacPorts legt alles im opt-Verzeichnis ab, gerade weil es nicht von Apples Sachen verwendet wird. Auf diese Weise wird es nicht zu Konflikten kommen. Die Anleitung (exzellent geschrieben, übrigens) enthält eine Erklärung, warum opt verwendet wird und wie Sie diese Standardeinstellung ändern können, wenn Sie möchten.
MacPorts-Handbuch
quelle
I have to concur that there's nothing weird or bad about MacPorts using
/opt
(likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
Geben Sie $ PATH als Echo ein, um Ihren Pfad anzuzeigen.
Bearbeiten Sie
~/.bash_profile
nicht , um Ihren Pfad festzulegen~/.bash_login
.quelle
Es gibt auch den von ssh festgelegten Pfad .
Vergleichen Sie
echo $PATH
mitssh localhost 'echo $PATH'
. Da ssh / etc / profile nicht liest, wird / usr / libexec / path_helper nicht ausgeführt und somit / etc / arrows übersprungen. Versuchen Sie es jetztssh localhost 'source /etc/profile; echo $PATH'
. Die Wege sollten näher sein. Die verbleibenden Unterschiede sind wahrscheinlich auf Pfadänderungen in Ihrem .bash_profile (das auch von ssh übersprungen wird) und .bashrc (das von ssh gelesen wird) zurückzuführen.Wenn Sie möchten, dass Ihr ssh-Pfad Ihrem normalen Terminalpfad ähnelt, können Sie
source /etc/profile
Ihren .bashrc- Pfad hinzufügen .quelle
Es kann definiert werden in:
/etc/paths
quelle
Tatsächlich wird es in Ihrer
.profile
Datei gespeichert,.bash_login
und es ist üblich, dass MacPorts dies anstelle der.bash_login
Datei verwendet.Das
/opt
Verzeichnis wird normalerweise von MacPorts erstellt und speichert seine Dateien in diesem Ordner.quelle
In Bezug auf das Hilfsprogramm docs
/usr/libexec/path_helper
wurden die Anfangskomponenten für $ PATH übernommen/etc/paths
und sehen standardmäßig so ausfür OS-X Snow Leopard
quelle