Jak zmienić zmienną środowiskową PATH na OS X 10.8 Mountain Lion, która będzie widoczna dla aplikacji GUI? [duplikować]


14

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 $PATHz 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:/sbindla aplikacji GUI.


Czy jesteś w porządku z rozwiązaniem, które ustawia ścieżkę bash, czy naprawdę potrzebujesz zmienić wartość uruchomionej ścieżki podstawowej dla wszystkich procesów?
bmike

Muszę zmienić ŚCIEŻKĘ używaną przez aplikacje GUI, dla terminalu / bash / ... Mam już duży zestaw działających rozwiązań.
sorin

Nie wiem, dlaczego środowisko Eclipse i inne nie obsługują tylko zmiennych środowiska wykonawczego, więc każdy programista Java na Macu nie musi się martwić o ustawienie ścieżki lub pozyskiwania pożądanych zmiennych w każdym projekcie.
bmike

Odpowiedzi:


8

W Mountain Lion /etc/launchd.confto miejsce, w którym należy ustawić ścieżkę aplikacji GUI. Pamiętaj, że to nie jest plik skryptu; obsługuje tylko launchctlpolecenia, więc powinieneś napisać coś takiego:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

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.


To działało dla mnie w 10.8.2 dla ustawienia ŚCIEŻKI, która była możliwa do użycia z Keyboard Maestro.
TJ Luoma,

Strona podręcznika mówi, że możesz użyć $ HOME / .launchd.conf, ale to nie działało dla mnie. Używanie /etc/launchd.conf zrobiło to. Jestem na 10.8.4
Pedz

Dla mnie to nie działa:-bash: setenv: command not found
Colas,

Jeśli ktoś był zdezorientowany jak Colas, setenvto launchctlpolecenie, więc używaj go jak launchctl setenv.
Jon Shier

3

Działa, jeśli wywołasz aplikację GUI z terminalu:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

wprowadź opis zdjęcia tutaj

Niezbyt przyjemne lub wygodne, ale w razie potrzeby działa.


Wkrótce BRAK SPOSOBU. Nie chcę tego robić, to będzie działać tylko czasami. Aplikację można również uruchomić po kliknięciu pliku.
sorin

2
Jak powiedziałem, nie jest to naprawdę miłe, ale może działać, dopóki Apple nie naprawi problemu (ponieważ powinno to być możliwe w przypadku uruchomienia).
nohillside

2

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 wybierz Execute 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ć

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Następnie zapisz wszystko, gdzie chcesz, a jeśli chcesz uruchomić YourApplication , otwórz utworzoną „aplikację automatyzującą”.

Przetestowałem to Terminaljako 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ć launchctlrzeczy 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).


-1

Podobno launchctlzapewnia PATHaplikacje GUI. Aby ustawić ścieżkę do ścieżki powłoki, po ustawieniu ścieżki dodaj do pliku rc powłoki:

launchctl setenv PATH $PATH

1
Niestety to nie działa :-(
nohillside


Pozwalamy na odpowiedzi, które podejmowane są w dobrej wierze, aby odpowiedzieć na pytanie. Dopuszczamy nawet błędne odpowiedzi i pozwalamy głosowaniu mówić za poprawnością. Komentowanie bez personalizacji jest najlepszym sposobem na wywiercenie dziury w błędnym argumencie, zamiast zniechęcać do prób odpowiedzi.
bmike
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.