Aplikacje uruchomione przez Finder wydają się nie respektować ŚCIEŻKI ustawionej w .bash_profile
. Więc kiedy próbuję uruchomić kod z IDE (Intellij), nie mam już dostępu do programów w /usr/local/bin
, które zwykle są dodawane do mojej ścieżki w Terminalu.
Najwyraźniej .MacOSX/environment.plist
kiedyś tak było, ale nie działa już w Lionie.
Jak mogę ustawić PATH
aplikacje uruchamiane przez Finder?
$PATH
Odpowiedzi:
Jeśli korzystasz z wersji 10.7, a nie 10.8, poniższe rozwiązanie działa dobrze:
Miałem ten sam problem z zaćmieniem, ale teraz dodałem np. Następujące,
.bash_profile
a potem zadziałało.Jeśli chcesz pozostawić oryginalną ścieżkę nienaruszoną, użyj
zamiast (lub po prostu
launchctl setenv PATH /my/new/path:$(launchctl getenv PATH)
).Uwaga: Zmiana PATH launchctl nie będzie obowiązywać, dopóki Dock nie zostanie „zrestartowany”. Nowy proces dokowania rozpocznie się automatycznie po zabiciu bieżącego za pomocą polecenia:
źródło
set|grep PATH
z nich zawsze powróciPATH=/usr/bin:/bin:/usr/sbin:/sbin
launchctl
:osascript -e 'tell app "Dock" to quit'
. To wydawało mi się, że to naprawiło.Aby odpowiedzieć na twoje pytanie dotyczące „nowego” problemu, postanowiłem napisać inną odpowiedź - ponieważ łatwiej jest to wyjaśnić za pomocą próbek.
Jednym ze sposobów ładowania zmiennych środowiskowych przy uruchamianiu wybranego narzędzia (IDE) jest to, że można to zrobić za pomocą Eclipse - myślę, że w twoim narzędziu (IDE) musi istnieć podobna struktura.
Jak można to zrobić w środowisku Eclipse - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set
(nieco przepisany na temat zmiennych środowiskowych)
Utwórz pusty plik tekstowy o nazwie „eclipse.sh” w katalogu pakietu aplikacji Eclipse
/Applications/eclipse/Eclipse.app/Contents/MacOS
Otwórz eclipse.sh w edytorze tekstu i wprowadź następującą zawartość:
W terminalu ustaw flagę wykonywalną skryptu powłoki eclipse.sh, tj .:
chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh
Otwórz Eclipse.app Info.plist i zmień wartość klucza CFBundleExecutable z eclipse na eclipse.sh.
MacOS X nie wykrywa automatycznie zmiany Info.plist w Eclipse.app. Dlatego musisz wymusić aktualizację bazy danych LaunchService w terminalu za pomocą polecenia lsregister:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
Przy następnym uruchomieniu Eclipse.app z Docka lub Findera należy ustawić zmienne środowiskowe.
źródło
W systemie OS X 10.10 Yosemite użyłem tego polecenia:
Pamiętaj, że ustawia on PATH launchtl dla wszystkich użytkowników . Działa to dobrze w moim przypadku użycia. Pamiętaj, że zostaniesz poproszony o ponowne uruchomienie komputera, aby efekty mogły zostać wstrzymane.
źródło
sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
zrestartować.environment.plist
W większości przypadków nie trzeba się bawić .Na Mountain Lion wszystko
/etc/paths
i/etc/launchd.conf
edycja nie ma żadnego efektu!Fora programistów Apple mówią:
Więc bezpośrednio edytowałem aplikację
Info.plist
(kliknij prawym przyciskiem „AppName.app” (w tym przypadku SourceTree), a następnie „Show package contents
”)i dodał nową parę klucz / dykt o nazwie:
(patrz: Dokumentacja LaunchServicesKeys w Apple )
teraz aplikacja (w moim przypadku SourceTree) korzysta z podanej ścieżki i działa z git 1.9.3 :-)
PS: Oczywiście musisz dostosować wpis Ścieżki do swoich specyficznych potrzeb.
źródło
/etc/launchd.conf
Zresztą nawet nie mam (10.8.2) . Można przypuszczać, że nawet jeśli przepisy nie stwierdzają, że aplikacje powinny wykorzystywać swoje Info.plist plików ścieżek, mogli nadal używać innych plików -/etc/launchd.conf
,/etc/paths/
lub/etc/paths.d/*
, lub `~ / .MacOSX / environment.plist. Czy można zatem powiedzieć, że w praktyce ścieżki dla aplikacji GUI w Mountain Lion można ustawić w dowolnym z tych plików?/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
jak podano w innej odpowiedzi, po zmianie plist i 2. dodać pełną ścieżkę , nie możesz użyć istniejącej ŚCIEŻKI, jak w skryptach profilu.lsregister
polecenia, jak zauważył @JaakL.Na Mountain Lion (10.8.4)
$PATH
jest traktowany w jakiś sposób.launchctl setenv PATH /your/path:/here
nie ma żadnego wpływu na$PATH
instancje w Terminal.app lub Emacs.app uruchomione następnie z Docka lub Findera (podczas gdylaunchctl setenv SPONG foo
działa dobrze). Też$HOME/.launchd.conf
nie działa./etc/launchd.conf
to jedyny sposób, w jaki znalazłem, aby wszędzie ustawiać PATH poprawnie. Niestety, nie można używać envarów takich jak$HOME
tam, więc wszyscy użytkownicy mojego laptopa mają/Users/nb/bin
je$PATH
. To tylko ja, więc mnie to nie obchodzi.źródło
PATH
wartość, ale: kiedy tworzysz nowy terminal, uruchamia powłokę logowania, która - jeśli używasz bash - wykonuje się/etc/profile
, co inicjujePATH
się do wartości zwróconej/usr/libexec/path_helper
. Jeśli wybierzesz Powłoka> Nowe polecenie… i uruchomiszenv
(nie w powłoce), powinieneś znaleźć tęPATH
wartość, którą ustawiłeś poprzez uruchomienie.Spróbuj ustawić ścieżkę w ~ / .profile lub ~ / .bash_profile lub ~ / .zprofile (dla zsh). Działa to dla mnie z VimR - nie czytał ŚCIEŻKI po uruchomieniu z doku, ale działał po uruchomieniu z terminala. Nawiasem mówiąc, działałem na OSX 10.11.
Nie mam wystarczającej wiedzy na ten temat, aby dać ci dobre wyjaśnienie, dlaczego to działa, istnieje wiele wyjaśnień online na temat różnych plików konfiguracyjnych i ich działania: https://stackoverflow.com/questions/415403/ whats-the-różnica-między-bashrc-bash-profile-and-environment
Zobacz także podobną dyskusję tutaj: https://stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893 # 24542893
źródło
W systemie Mac OS X 10.8.4 Mountain Lion środowisko ścieżki zawiera ścieżki wymienione w tym pliku:
Możesz edytować ten plik za pomocą narzędzia wiersza poleceń, takiego jak
vim
następujące polecenie:źródło