Chciałbym dołączyć do globalnej zmiennej środowiskowej PATH w OS X, aby wszystkie powłoki użytkownika i aplikacje GUI otrzymały to samo środowisko PATH.
Wiem, że mogę dołączyć do ścieżki w skryptach uruchamiania powłoki, ale te ustawienia nie są dziedziczone przez aplikacje GUI.
Jedynym sposobem, jaki do tej pory znalazłem, jest przedefiniowanie zmiennej środowiskowej PATH w pliku /etc/launchd.conf :
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
Nie mogłem znaleźć sposobu, aby dołączyć do PATH launchd.conf
.
Martwię się trochę o tę metodę, ale jak dotąd to jedyna rzecz, która działa. Czy jest lepszy sposób?
Odpowiedzi:
informacje GUI palmera są poprawne, ale istnieje łatwiejszy w utrzymaniu sposób modyfikowania ścieżki widocznej przez powłokę. Jak powiedział mediaslave , możesz edytować
/etc/paths
, ale jeszcze lepiej możesz upuścić plik tekstowy,/etc/paths.d/
który zawiera ścieżkę, a wszystkie powłoki poprawnie utworzą ścieżkę.Na przykład w moim systemie:
źródło
X11
(mniej bolesne niż całkowite wylogowanie). Nie próbowałem tegoTerminal
.$PATH
./etc/launchd.conf
launchd.conf
Plik jest ** tylko kompletne rozwiązanie, które będzie pracować dla obu linii poleceń i GUI aplikacji na OS X v10.8 (Mountain Lion) i v10.9 (Mavericks), jednego, który będzie działał z GUI i konsoli aplikacji dla wszystkich użytkowników .Dodaj
W powyższym przykładzie dodałem
/usr/local/bin
do domyślnych wartości środowiska PATH.Pamiętaj, że ten plik nie jest skryptem i nie masz możliwości korzystania z podstawień. Ponadto, aby je zastosować, musisz ponownie uruchomić komputer.
Pamiętaj, że wszystkie inne są tylko częściowymi rozwiązaniami:
environment.plist
nie działa w przypadku aplikacji uruchomionych przez Spotlight./etc/paths
- tylko dla konsoli/etc/csh.cshrc
lub/etc/bashrc
- tylko dla niektórych muszliTa odpowiedź jest oparty na tym samym pytanie Ustawianie zmiennych środowiskowych w systemie Mac OS X .
źródło
/etc/launchd.conf
.Będziesz musiał ustawić go na zasadzie shell-by-shell; Powłoki Bash i csh-podobne nie współużytkują tych samych plików konfiguracyjnych i składni do dostosowywania PATH.
Próba wykonania tego w
launchctl
nie zadziała, ponieważ zmienne środowiskowe są ustawiane podczas logowania; nie istnieją one w całym systemie w Uniksie poza sesją powłoki.Więc chcesz dodać
do
/etc/csh.cshrc
ido
/etc/bashrc
.Jeśli potrzebujesz zmiennych środowiskowych w aplikacjach GUI, jest to bardziej skomplikowane. Musisz utworzyć
.MacOSX/environment.plist
plik w katalogu domowym każdego użytkownika..MacOSX
Katalog prawdopodobnie nie będzie istnieć domyślnie, więc musisz go utworzyć.Format pliku jest taki:
Więcej na ten temat
environment.plist
znajduje się na stronie Apple .źródło
~/.MacOSX/environment.plist
podejście nie jest już obsługiwane i nie ma substytutu na poziomie użytkownika. Możesz korzystać z całego systemu/etc/launchd.conf
(i istnieje rozwiązanie dla * aplikacji).Możesz edytować swoją globalną ścieżkę, dodając linie do
/etc/paths
jednej ścieżki na linię.sudo nano /etc/paths
powinien cię tam zabrać.źródło
Czy przejrzałeś stronę man dla
path_helper
narzędzia wiersza poleceń w OS X? Odpowiedziałem na nieco powiązane pytanie dotyczące SO, które moim zdaniem może okazać się pomocne.źródło
Nie jestem pewien, czy ktoś opisał najprostszy i najbardziej elegancki sposób. Przynajmniej w systemie Mac OS X 10.6 (Snow Leopard).
Messing z
[/etc/|~/.]
z[profile|bashrc]
plikami może pracować, ale to nieco hack./etc/paths.d/
Katalog jest do zrobienia:Utwórz nowy plik o nazwie
*name*
(po prostu nie nazywaj go czymś, co już tam jest)/etc/paths.d/
ze ścieżką do wiersza:Następnie dodaj
do
profile
lubbashrc
, i powinieneś być dobry.źródło
*name*
? Czy masz na myśli tylkoname
?Nie jestem pewien, czy uruchomione to akceptuje, ale spróbuj:
źródło
Nie jestem pewien, dlaczego używałbyś go
/etc/launchd.conf
w przeciwieństwie do/etc/profile
- ale nie jestem ekspertem w Mac OS X - wierzę, że jestem pewien, że działa, alelaunchd
jest to implementacja / zamiennik Mac OS X dlainit
- Mac OS X mnie myli.Tak czy inaczej,
setenv PATH "$PATH:/more/paths:/and/more/paths"
zadziała (tcsh), a odpowiednik powłoki bourn brzmiexport PATH="$PATH:/more/paths:/and/more/paths"
- nie mam pojęcia, jaklaunchd
jest ona powiązana z określoną powłoką.Myślę, że zadałem więcej pytań niż odpowiedziałem =)
źródło