Po wielu próbach z różnymi opcjami stwierdzam:
Czy istnieje ujednolicony sposób ustawiania PATH
aplikacji uruchamianych na różne sposoby (np. Skrypt powłoki, Finder i Spotlight)? Cóż, tak i nie:
- Nie : Ustawienie
PATH
w skryptach uruchamiania powłoki (np. .bashrc
) Działa tylko w przypadku aplikacji uruchamianych przez powłoki.
- Nie : Ustawienie
PATH
bieżącego launchd
procesu przez launchctl setenv PATH <...>
nie działa w ogóle dla mnie.
- Tak : Ustawienie
PATH
w /etc/launchd.conf
(i ponownym uruchomieniu systemu) sprawi, że właściwe PATH
widoczne w aplikacjach uruchamianych przez Spotlight, Dock i Finder, a następnie (lokalnych) muszli.
- Nie : Zdalnie wywoływane powłoki nie dziedziczą środowiska. (Zobacz ... dlaczego zdalne powłoki przez ssh NIE dziedziczą środowiska ... )
Uwagi do konfiguracji pocisków:
Dla poprawnego działania w lokalnych powłokach ważne jest, aby wyłączyć użycie /usr/libexec/path_helper
, ponieważ domyślne ścieżki w /etc/paths
mogą zmienić kolejność ścieżek w PATH
. **
Aby pomieścić zdalne powłoki, musisz ponownie zaimportować launchd
środowisko do powłoki. Użyj czegoś takiego w swoim .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
Niefortunne konsekwencje całego problemu to:
- Nie ma możliwości, aby te ujednolicone ustawienia dla poszczególnych użytkowników. (
~/.launchd.conf
nie działa.)
- Nie ma łatwego sposobu na zbudowanie ŚCIEŻKI z różnych źródeł przy użyciu technik takich jak rozszerzenie katalogu domowego i in.
/etc/launch.conf
nie nie działa dla pocisków zalogować się zdalnie przez ssh (zakładam, ponieważsshd
nie przechodzi jej otoczenie to dziedziczy od swojego rodzicalaunchd
do dziecka powłoki.). - Zredaguję odpowiednio odpowiedź.eval "$(launchctl export)"
./etc/launchd.conf
jest po prostu uruchomieniesudo -e /etc/launchd.conf
(jeśli znasz vi) lubEDITOR=nano sudo -e /etc/launchd.conf
(jeśli wolisz edytor niemodalny).Rozwijając poprzednią odpowiedź , aby zmienić ścieżkę
/etc/launchd.conf
, musisz wykonać następujące czynności.Upewnij się, że masz uprawnienia administratora.
Utwórz nowy plik tekstowy z następującą treścią, zmodyfikowany w zależności od potrzeb:
Zapisz go w swoim katalogu domowym jako
launchd.conf
.Otwórz Terminal.app (lub ulubiony zamiennik) i wpisz:
sudo mv ~/launchd.conf /etc
W zależności od wcześniejszego użycia
sudo
polecenia może pojawić się krótki komunikat „ostrożnie rób to, co robisz”, ale w obu przypadkach konieczne będzie podanie hasła. Wszystko, co robi, to przenieść plik do/etc
katalogu, który nie jest bezpośrednio dostępny na przykład podczas zapisywania pliku w TextEdit.sudo
(skrót „Super User DO”) jest używany, ponieważ do zapisu w tym katalogu potrzebne są uprawnienia administratora.Zrestartuj swój komputer.
I powinieneś być gotowy. Powodzenia!
źródło
launchd.conf
, ale raczej tego, w jaki sposób wszystkie aplikacje uzyskują tę samą zmienną PATH w ujednolicony sposób.PATH
dla moich aplikacji GUI, i pomyślałem, że pomogę biednym duszom, które mogą nie wiedzieć, jak wprowadzić zmianę ...Możesz spróbować https://github.com/ersiner/osx-env-sync .
Obsługuje aplikacje wiersza polecenia i GUI z jednego źródła . Działa z najnowszą wersją systemu OS X (Yosemite).
źródło
launchd
systemu. Twoje rozwiązanie ma te same problemy, co podane w zaakceptowanej odpowiedzi.