Rozumiem, w jaki sposób można ustawić $ PATH, ale czy istnieje dokumentacja, która w pełni opisuje, gdzie Mac OS uzyskuje wszystkie ścieżki dołączane do $ PATH? Zdaję sobie sprawę z tego, jak /etc/profile
, /etc/paths
i /etc/profile.d
, ale czy istnieją inne skrypty, które ostatecznie wpływają na wartość $ PATH? Nie jestem też zbyt dobrze zaznajomiony z brakiem logowania i powłokami logowania ( .bashrc
, .bash_profile
), ale zdaję sobie sprawę z podstawowych różnic.
/etc/profile
skrypt jest używany głównie przez bash? Nie mam doświadczenia z innymi pociskami, ale zakładam, że mają inną strukturę?/etc/profile
Jest używany przez większość (wszystkie? Nie w 100% pewien) muszli. Dlatego dobrym pomysłem jest umieszczenie w dowolnym miejscu rzeczy, które chcesz, takich jak ŚCIEŻKI. Bash czyta.bash_
pliki, podczas gdy na przykład Zsh czyta.zshrc
oprócz innych. To zależy od powłoki.path_helper
jest wywoływany dla interaktywnych powłok niezalogowanych (ani nieinteraktywnych powłok). W rzeczywistości jest nazywany interaktywnymi powłokami logowania ./etc/profile
Ścieżki do
/etc/paths
i/etc/paths.d/*
są zwykle dodawanePATH
przez path_helper .path_helper
jest uruchamiany z/etc/profile
, więc jest uruchamiany, gdy bash jest wywoływany jako interaktywna powłoka logowania, ale nie jest uruchamiany, gdy bash jest wywoływany jako powłoka niezalogowana lub powłoka nieinteraktywna./etc/paths
zawiera/usr/local/bin
na końcu domyślnie i/etc/paths.d/
jest domyślnie pusty.Terminal i iTerm 2 domyślnie otwierają nowe powłoki jako powłoki logowania, a powłoka otwierana podczas ssh na komputerze jest również powłoką logowania. Wiele emulatorów terminali na innych platformach
tmux
oraz tryb powłoki w Emacsie otwierają jednak nowe powłoki jako powłoki niezalogowane.Dodałem tę linię do
/etc/launchd.conf
:setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Zmienia wartość
PATH
uruchomionego procesu rootowania. Wartość jest dziedziczona przez wszystkie inne procesy, w tym procesy uruchomione przez użytkownika. Możesz zastosować zmiany/etc/launchd.conf
, uruchamiając ponownie lub uruchamiająclaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
i ponownie uruchamiając procesy.W systemie OS X
~/.profile
nie jest odczytywany po zalogowaniu graficznym. Jeśli oba istnieją~/.bash_profile
i~/.profile
istnieje, bash też nie czyta~/.profile
.~/.MacOSX/environment.plist
przestał działać w 10.8.źródło