To pytanie ma już odpowiedź tutaj:
Próbowałem wszystkich metod, o których słyszałem, do ustawiania zmiennych środowiskowych w systemie OS X 10.8, ale żadna z nich nie działa.
Aby przetestować, uruchom skrypt bash z aplikacji GUI, takich jak Eclipse lub IntelliJ IDEA.
#!/bin/bash
set|grep PATH
Rzeczy, które przetestowałem i które nie działają nawet po ponownym uruchomieniu:
/etc/paths
i/etc/paths.d/something
/etc/launchd.conf
~/.bash_profile
~/.MacOSX/environment.plist
(binarny plist wykonany zgodnie z zaleceniami)- działający
launchctl setenv PATH $PATH
z wiersza poleceń miał to aktualizować ŚCIEŻKĘ dla aplikacji GUI, przynajmniej dla bieżącej sesji. Zgadnij co, bez zmian.
Wygląda na to, że PATH jest zawsze PATH=/usr/bin:/bin:/usr/sbin:/sbin
dla aplikacji GUI.
macos
path
environment-variables
sorin
źródło
źródło
Odpowiedzi:
W Mountain Lion
/etc/launchd.conf
to miejsce, w którym należy ustawić ścieżkę aplikacji GUI. Pamiętaj, że to nie jest plik skryptu; obsługuje tylkolaunchctl
polecenia, więc powinieneś napisać coś takiego:Zauważ też, że nie obsługuje on podstawiania zmiennych środowiskowych powłoki (jak
$PATH
), więc będziesz musiał ustawić każdą ścieżkę, którą chcesz dołączyć. Warto zachować oryginalne ścieżki, o których wspomniałeś (/usr/bin:/bin:/usr/sbin:/sbin
).Będziesz musiał ponownie uruchomić komputer po zmianie (lub utworzeniu) pliku, aby zmiany odniosły skutek.
źródło
-bash: setenv: command not found
setenv
tolaunchctl
polecenie, więc używaj go jaklaunchctl setenv
.Działa, jeśli wywołasz aplikację GUI z terminalu:
Niezbyt przyjemne lub wygodne, ale w razie potrzeby działa.
źródło
Przygotowałem inne rozwiązanie, zainspirowane jednym z rozwiązań Patrix , które, mam nadzieję, jest nieco mniej bolesne. Otwórz
Automator
, wybierz aplikację jako cel i wybierzExecute Shell script
(lub jak to się nazywa, w języku niemieckim jest to „Shell-Skript ausführen”, jak widać powyżej) jako działanie. W skrypcie wystarczy wpisaćNastępnie zapisz wszystko, gdzie chcesz, a jeśli chcesz uruchomić YourApplication , otwórz utworzoną „aplikację automatyzującą”.
Przetestowałem to
Terminal
jako YourApplicationHere i zobaczyłem,launchctl export
że FOO rzeczywiście był ustawiony na bar . Mam nadzieję, że zadziała to także dla innych.Wreszcie, jeśli użyjesz tego rozwiązania dla zmiennych środowiskowych, zamiast wpisywać
launchctl
rzeczy w skrypcie powłoki, możesz po prostu wywołać/Users/Shared/conflaunchd.sh
(co musisz najpierw wymyślić, wraz z plikiem opisującym zmienne).źródło
Podobno
launchctl
zapewniaPATH
aplikacje GUI. Aby ustawić ścieżkę do ścieżki powłoki, po ustawieniu ścieżki dodaj do pliku rc powłoki:źródło