Gdzie są ustawione zmienne środowiskowe systemu w Mountain Lion?

46

W Lion (i poprzednich wersjach) było .MacOSX/environment.plist. Po aktualizacji do 10.8 plik nadal tam jest, ale zmienne nie są pobierane.

Próbowałem też je dodać /etc/launchd.confi będą one wyświetlane w Terminalu, ale nie w aplikacjach GUI (takich jak moje IDE).

Felix
źródło
Czy zrestartowałeś się po zmianie /etc/launchd.conf?
nohillside
Tak zrobiłem, a wszystkie zmienne w nim zawarte są teraz dostępne w dowolnym terminalu, ale nie są obecne w moim IDE.
Felix,
Może IDE nie udostępnia ci środowiska (zobacz moją odpowiedź )? Co to jest IDE? czy jest uruchamiany bezpośrednio przez Finder czy Spotlight?
halloleo

Odpowiedzi:

22

Zadałem to pytanie również na forach programistów Apple i uzyskałem oficjalną odpowiedź.

Zmień Info.plist samej aplikacji., Aby zawierała słownik „LSEnvironment” ze zmiennymi środowiskowymi, które chcesz.
~ / .MacOSX / environment.plist nie jest już obsługiwany.

Felix
źródło
2
Gdzie to się znajduje?
orome,
Przydałoby się podać link do bardziej szczegółowego przykładu.
Blaisorblade,
1
Aktualizacja: Próbowałem zmienić ten plik, po ustaleniu składni (tak myślę), ale dla mnie to w ogóle nie działa.
Blaisorblade
4
W aplikacji WhatEver.app/Content/Info.plist będzie dostępna aplikacja Info.plist. Możesz go edytować za pomocą XCode. Kliknij „+” na liście właściwości informacji i dodaj słownik o nazwie LSEnvironment. Jeśli wpiszesz go poprawnie, zmieni nazwę na Zmienne środowiskowe. Następnie kliknij „+” dla każdej zmiennej środowiskowej, którą chcesz dodać.
Felix
2
To dobre rozwiązanie, ale nie działa już od Yosemite 10.10.5.
Dalmazio
21

Wiem, że to stare pytanie, ale pomyślałem, że zwrócę uwagę na to, że w Yosemite /etc/launchd.confjuż nie działa (co potwierdza strona podręcznika). Oto alternatywa.

Uruchom AppleScript Editor, wprowadź polecenie takie jak to:

do shell script "launchctl setenv variablename value"

(dodaj tyle linii, ile chcesz)

Teraz zapisz (⌘S) jako Format pliku: Aplikacja . Na koniec otwórz Ustawienia systemuUżytkownicy i grupyZaloguj się i dodaj nową aplikację.

ruario
źródło
Pamiętaj, że może nie działać ani z innymi aplikacjami otwieranymi jako elementy logowania i być może tymi, które otwierasz szybko po zalogowaniu
użytkownik151019
To zadziałało dla mnie. Dziękuję bardzo. To doprowadzało mnie do szału przez cały dzień!
wholladay
2
Wygląda jak jedyne jak dotąd prawdziwe i uniwersalne rozwiązanie. Ale potrzebuje jeszcze 9 głosów pozytywnych, aby przejść w górę i stać się pierwszą odpowiedzią. : c
Sarge Barszcz
To działało dla mnie na El Capitan. Jak wspomniano powyżej przez @Mark, występują problemy z zamawianiem (np. Wznowione aplikacje mogą mieć środowisko, ale nie muszą), ale po zalogowaniu działa to tak, jak można się spodziewać. Oznacza to, że aplikacje uruchomione z Spotlight lub Dock mają odpowiednie środowisko.
Alec Thomas
@ Mark Możesz wypróbować tę odpowiedź , korzystając z agenta uruchamiania. W moim przypadku agent uruchamiania uruchamia się po elementach logowania, więc przenoszę docelową aplikację (np. Eclipse) z elementu logowania do agenta uruchamiania, aby zostały one uruchomione po tych zmiennych środowiskowych ustawionych dla aplikacji.
Franklin Yu
10

Jak już odkryłeś , użycie pliku environment.plist nie jest już przestrzegane, zmienne przechowywane w Info.plist jako łańcuchy LSEnvironment są ustawiane tylko przez uruchomienie .

Nie można na nich polegać, aby ustawić ogólną zmienną środowiskową, którą ustawi terminal, jeśli wywołujesz swój program bezpośrednio z terminala / powłoki. Dobrą wiadomością jest to, że open -apolecenie uruchamia uruchamianie w celu uruchomienia, więc zmienne będą ustawione konsekwentnie dla środowiska aplikacji, jeśli nie dla lokalnego środowiska powłoki.

bmike
źródło
4

Ustawianie zmiennych środowiskowych /etc/launchd.confjest na drodze: każda aplikacja uruchomiona po ponownym uruchomieniu przez lokalne powłoki, Finder lub Spotlight dziedziczy te zmienne - przetestowałem to dokładnie w Mountain Lion 10.8.3.

2 zastrzeżenia:

halloleo
źródło
1
/etc/launchd.confnie jest już obsługiwany od Yosemite. Zobacz apple.stackexchange.com/questions/106355/…
Franklin Yu
3

Spróbować launchctl setenv NAME VALUE. Nie wiem czy / co robi inaczej niż edycja launchd.conf, ale działa dla mnie zarówno w aplikacjach Terminal jak i GUI. Więcej szczegółów.

Pamiętaj, że nie przetrwa to po ponownym uruchomieniu. Oto sposób, aby to naprawić .

Ryan
źródło
3
To dość długa strona, do której prowadzi link. Gdzie dokładnie jest odpowiednia część? Czy możesz podać to bezpośrednio w swojej odpowiedzi, aby ułatwić wszystkim?
nohillside
2
ups, dobra uwaga, pomyślałem, że w tym adresie URL znalazłem więcej fragmentów. naprawiony.
Ryan
1
Podany tam sposób na przetrwanie po ponownym uruchomieniu używa środowiska
..plist,