Piszę echo $PATH
w wierszu poleceń i otrzymuję
/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
Zastanawiam się, gdzie to się ustawia, ponieważ mój .bash_login
plik jest pusty.
Szczególnie niepokoi mnie to, że po zainstalowaniu MacPorts zainstalował kilka śmieci /opt
. Nie sądzę, aby ten katalog istniał nawet w normalnej instalacji Mac OS X.
Aktualizacja: Podziękowania dla jtimberman za poprawienie mojego echo $PATH
oświadczenia
macos
command-line
osx-snow-leopard
bash
path
Andrzej
źródło
źródło
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
jest przydatny w skryptach instalacyjnych. Jeśli chcę, aby mój skrypt instalacyjny dodał zainstalowany program do ścieżki, mogę upuścić plik/etc/paths.d
. Jeśli chcę ręcznie edytować ścieżkę,/etc/paths
jest lepszą opcją.Odpowiedzi:
Po
bash
uruchomieniu odczytuje następujące pliki przy każdym logowaniu. Dla celów OS X oznacza to za każdym razem, gdy otwierasz noweTerminal
okno.Gdy uruchomisz nową powłokę, wpisując
bash
w wierszu poleceń, czytamy.bashrc
OS X używa również
~/.MacOSX/environment.plist
do ustawiania większej liczby zmiennych środowiskowych, w tym ścieżek, jeśli to konieczne.Wreszcie
/etc/paths
i/etc/paths.d
są czytane również przez powłokę./opt/local/bin
itp. są dodawane~/.tcshrc
przez MacPorts. Pamiętaj również, aby zajrzeć do środka~/.cshrc
.źródło
~/.MacOSX/environment.plist
nie działa u niektórych osób. W Change Path for OS X/etc/paths.d
opisano alternatywne użycie folderu . Nie testowałem tego.~/.cshrc
. Oszalałem próbując dowiedzieć się, dlaczego~/.profile
nie działa..bashrc
jest czytany niezależnie od tego, czy piszeszbash
czy nie.Spójrz na plik
/etc/paths
, który jest używany przez/usr/libexec/path_helper
, który jest używany przez/etc/profile
.W przypadku MacPorts użyj
sudo /etc/paths/opt/local/bin
i ponownie otwórz okno terminala.źródło
Poważnie, Leopard dał nam nowy sposób na dodanie ścieżki. Po prostu utwórz plik zawierający część ścieżki, którą chcesz dodać, i umieść go w /etc/paths.d
Szybki przykład zrobienia tego w jednym kroku to:
W przeciwnym razie możesz po prostu przejść do /etc/paths.d i bezpośrednio tam umieścić plik. Tak czy inaczej, wszystkie części ścieżki w plikach w tym katalogu zostaną dołączone do ścieżki domyślnej.
Działa to również w przypadku manpath.
Oto link do bardziej szczegółowych informacji:
ars technica: jak dodać coś do ŚCIEŻKI w lampartach śnieżnych?
Druga uwaga: MacPorts umieszcza wszystko w katalogu opt właśnie dlatego, że nie jest używane przez Apple. W ten sposób nie będzie konfliktu. Ich przewodnik (doskonale napisany, BTW) zawiera wyjaśnienie, dlaczego używa opt i jak zmienić to ustawienie domyślne, jeśli chcesz.
Przewodnik MacPorts
źródło
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.
Aby pokazać swoją ścieżkę, wyświetl echo $ PATH.
Aby ustawić ścieżkę, edytuj
~/.bash_profile
, a nie~/.bash_login
.źródło
Istnieje również ścieżka określona przez ssh .
Porównaj
echo $PATH
zssh localhost 'echo $PATH'
. Ponieważ ssh nie czyta / etc / profile, / usr / libexec / path_helper nie działa, a zatem / etc / paths jest pomijany. Teraz spróbujssh localhost 'source /etc/profile; echo $PATH'
. Ścieżki powinny być bliżej. Pozostałe różnice będą prawdopodobnie spowodowane modyfikacją ścieżki w pliku .bash_profile (który jest również pomijany przez ssh) i .bashrc (który jest odczytywany przez ssh).Jeśli chcesz, aby ścieżka ssh była podobna do normalnej ścieżki terminalu, możesz dodać ją
source /etc/profile
do pliku .bashrc.źródło
Można to zdefiniować w:
/etc/paths
źródło
W rzeczywistości jest on przechowywany w twoim
.profile
pliku zamiast.bash_login
i często MacPorts użyje tego zamiast.bash_login
pliku.Również
/opt
katalog jest zwykle tworzony przez MacPorts i przechowuje swoje pliki w tym folderze.źródło
Jeśli chodzi o dokumenty dotyczące
/usr/libexec/path_helper
narzędzia, początkowe składniki $ PATH zostały pobrane/etc/paths
i domyślnie wyglądajądla OS-X Snow Leopard
źródło