Ustawianie zmiennych środowiskowych w systemie Mac OS X Lion

Gdy ktoś mówi " edytuj swoje .plik plist " lub " twój .profil" lub ".bash_profile " itp, To mnie tylko myli. Nie mam pojęcia, gdzie są te pliki, jak je utworzyć, jeśli muszę to zrobić, itp., a także dlaczego wydaje się, że jest tak wiele różnych (dlaczego? Robią różne rzeczy?)

Więc czy ktoś mógłby bardzo cierpliwie wyjaśnić poprzedniemu użytkownikowi Windows (chcącemu bardziej zaznajomić się z przyjemnym, choć początkowo nieco mylącym światem OS X) Jak to zrobić krok po kroku?

Muszę ustawić zmienne zarówno dla aplikacji GUI, jak i aplikacji wiersza poleceń, a w tej chwili jest to skrypt ant, który potrzebuje zmiennych, ale najprawdopodobniej będą też inne potrzeby.

Proszę zauważyć, że ja też mam lwa, ponieważ wiele odpowiedzi, które dostajesz w Googlach, wydaje się być przestarzałe dla Lwa...

Zauważ również, że mam praktycznie zerowe doświadczenie w korzystaniu z terminala. Chętnie się nauczę, ale proszę o wyjaśnienie dla nowicjusza...

Author: Marcus Leon, 2011-09-21

15 answers

Po pierwsze, jedną rzeczą, którą należy rozpoznać w OS X, jest to, że jest zbudowany na Uniksie. To tutaj .bash_profile wchodzi. Po uruchomieniu aplikacji Terminal w systemie OS X domyślnie pojawia się powłoka bash. Powłoka bash pochodzi z Uniksa i po załadowaniu uruchamia .skrypt bash_profile. Możesz zmodyfikować ten skrypt, aby użytkownik mógł zmienić ustawienia. Ten plik znajduje się pod adresem:

~/.bash_profile

Aktualizacja dla Mavericks

OS X Mavericks nie używa środowiska.plist - przynajmniej nie dla aplikacji OS X windows. Możesz użyć konfiguracji launchd dla aplikacji z oknami. The .bash_profile jest nadal obsługiwane, ponieważ jest częścią powłoki bash używanej w Terminalu.

Tylko Lew i Lew górski

Aplikacje OS X windowed odbierają zmienne środowiskowe z twojego środowiska.plik plist. To jest prawdopodobnie to, co masz na myśli przez ".plist " plik. Ten plik znajduje się pod adresem:

~/.MacOSX/environment.plist

Jeśli dokonasz zmiany w swoim środowisko.plik plist następnie Aplikacje OS X windows, w tym aplikacja Terminal, będą miały te zmienne środowiskowe ustawione. Dowolna zmienna środowiskowa ustawiona w Twoim .bash_profile wpłynie tylko na powłoki bash.

Generalnie ustawiam tylko zmienne w moim .plik bash_profile i nie zmieniaj .plik plist (lub plik launchd na Mavericks). Większość aplikacji windowed OS X nie potrzebuje żadnego niestandardowego środowiska. Zmieniam tylko wtedy, gdy aplikacja rzeczywiście potrzebuje określonej zmiennej środowiskowej środowisko.plist (lub plik launchd na Mavericks).

Wygląda na to, że chcesz zmienić otoczenie.plik plist, a nie .bash_profile. I jeszcze jedno, jeśli poszukasz tych plików, myślę, że ich nie znajdziesz. Jeśli dobrze pamiętam, nie było ich na mojej początkowej instalacji Lion.

Edit: Oto kilka instrukcji tworzenia pliku plist.

  1. Otwórz Xcode
  2. Wybierz Plik - > Nowy - > Nowy Plik...
  3. pod Mac OS X select Resources
  4. Wybierz plik plist
  5. postępuj zgodnie z resztą podpowiedzi

Aby edytować plik, możesz kliknąć przyciskiem Control, aby uzyskać menu i wybrać Dodaj wiersz. Następnie można dodać parę wartości klucza. Dla zmiennych środowiskowych kluczem jest nazwa zmiennej środowiskowej, a wartość jest rzeczywistą wartością dla tej zmiennej środowiskowej.

Po utworzeniu pliku plist możesz go otworzyć za pomocą Xcode, aby zmodyfikować go w dowolnym momencie.

 376
Author: David V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:07

Twój ".profil" lub ".bash_profile " to po prostu pliki, które znajdują się w folderze "home". Jeśli otworzysz okno Findera i klikniesz nazwę konta w okienku ulubione ... nie zobaczysz ich. Jeśli otworzysz okno terminala i wpisz "ls", aby wyświetlić listę plików ... nadal ich nie zobaczysz. Ale możesz je znaleźć używając "ls-a" w terminalu. Lub jeśli otworzysz swój ulubiony edytor tekstu (powiedzmy TextEdit, ponieważ jest dostarczany z OS X) i wykonaj Plik - > Otwórz, a następnie naciśnij Command+Shift+. i kliknij na swój nazwa konta (folder domowy) zobaczysz je również. Jeśli ich nie widzisz, możesz po prostu utworzyć je w ulubionym edytorze tekstu.

Teraz dodawanie zmiennych środowiskowych jest dość proste i bardzo podobne koncepcyjnie do windows. W Twoim .profil wystarczy dodać, po jednym w linii, nazwę zmiennej i jej wartość w następujący sposób:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

Itd.

Jeśli modyfikujesz zmienną "PATH", pamiętaj, aby uwzględnić domyślną ścieżkę systemu, która została już ustawiona dla ty:

export PATH=$PATH:/path/to/my/stuff

Teraz jest dziwna część, możesz albo otworzyć nowe okno terminala, aby nowe zmienne zaczęły działać, albo musisz wpisać". .profil" lub ". .bash_profile " aby ponownie załadować plik i zastosować zawartość do środowiska bieżącego terminala.

Możesz sprawdzić, czy zmiany zostały wprowadzone za pomocą polecenia " set " w twoim terminalu. Po prostu wpisz "set" (lub "set | more", jeśli wolisz listę stron) i upewnij się, że to, co dodałeś do pliku, jest tam.

Jeśli chodzi o dodawanie zmiennych środowiskowych do aplikacji GUI, zwykle nie jest to konieczne i chciałbym usłyszeć więcej o tym, co konkretnie próbujesz zrobić, aby lepiej dać ci odpowiedź na to pytanie.

 201
Author: tokkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 15:07:24

Oto nieco więcej informacji dotyczących zmiennej PATH w Lion OS 10.7.x:

Jeśli chcesz ustawić ścieżkę globalnie, ścieżka jest budowana przez system w następującej kolejności:

  1. Analizowanie zawartości pliku /private/etc/paths, jedna ścieżka na linię
  2. Analizowanie zawartości folderu /private/etc/paths.d. Każdy plik w tym folderze może zawierać wiele ścieżek, po jednej ścieżce na linię. Kolejność ładowania określa najpierw nazwa pliku, a następnie kolejność linii w plik.
  3. Instrukcja setenv PATH w /private/etc/launchd.conf, która doda tę ścieżkę do ścieżki już zbudowanej w #1 i # 2 (nie wolno używać $PATH do odwołania się do zmiennej PATH, która została do tej pory zbudowana). Ale ustawienie ścieżki tutaj jest całkowicie niepotrzebne, biorąc pod uwagę dwie pozostałe opcje, chociaż jest to miejsce, gdzie inne globalne zmienne środowiskowe mogą być ustawione dla wszystkich użytkowników.

Te ścieżki i zmienne są dziedziczone przez wszystkich użytkowników i aplikacje, więc są naprawdę globalne -- wylogowanie się i wejście nie spowoduje zresetowania tych ścieżek - są one zbudowane dla systemu i są tworzone zanim jakikolwiek użytkownik otrzyma możliwość zalogowania się, więc zmiany w nich wymagają ponownego uruchomienia systemu, aby wejść w życie.

BTW, czysta instalacja OS 10.7.x Lion nie ma environment.plist, który mogę znaleźć, więc może działać, ale może być również przestarzały.

 74
Author: jonphipps,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-12 20:16:23
echo $PATH

Wyświetla bieżącą wartość ścieżki

Następnie zrób vim ~/.bash_profile i napisz

export PATH=$PATH:/new/path/to/be/added

Tutaj dodajesz do starej ścieżki, więc zachowuje starą ścieżkę i dodaje do niej nową ścieżkę

To zrób

source ~/.bash_profile

Spowoduje to jego wykonanie i dodanie ścieżki

Następnie ponownie sprawdź

echo $PATH
 45
Author: learner_19,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-29 10:28:20

Niestety żadna z tych odpowiedzi nie rozwiązała konkretnego problemu, który miałem.

Oto proste rozwiązanie bez bałaganu z bash. W moim przypadku, to było getting gradle do pracy(dla Android Studio).

Btw, te kroki odnoszą się do OSX (Mountain Lion 10.8.5)

  • otworzyć Terminal.
  • Uruchom następujące polecenie:

    sudo nano /etc/paths (lub sudo vim /etc/paths dla vim)

    nano

  • Przejdź na dół pliku i wprowadź ścieżkę, którą chcesz add.
  • naciśnij control-x, aby zakończyć.
  • Wpisz "Y", aby zapisać zmodyfikowany bufor.
  • Otwórz nowe okno terminala, a następnie wpisz:

    echo $PATH

Nowa ścieżka powinna być dołączona do końca ścieżki

Dostałem te dane z tego postu:

Http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

Mam nadzieję, że to pomoże komuś innemu

 30
Author: wired00,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-01 23:27:08

Uproszczone Wyjaśnienie

Ten post / pytanie jest trochę stary, więc odpowiem na uproszczoną wersję dla użytkowników OS X Lion. Domyślnie, OSX Lion nie posiada żadnego z następujących plików:

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profil

Co najwyżej, jeśli zrobiłeś coś w terminalu, możesz zobaczyć ~/.bash_history

Co To Znaczy

Musisz utworzyć plik, aby ustawić domyślne polecenia bash (zwykle w ~/.bashrc). Do zrobienia to, Użyj dowolnego edytora, choć łatwiej jest to zrobić w terminalu:

  1. % > emacs .profil
  2. [Z w / w Emacs typu:] source ~/.bashrc
  3. [from w / in Emacs type:] Ctrl + x Ctrl + s (to save the file)
  4. [Z w / w Emacs typu:] Ctrl + x Ctrl + c (aby zamknąć emacs)
  5. % > emacs .bashrc
  6. [Z w / w Emacsie wpisz / wklej wszystkie polecenia Basha, Zapisz i zakończ]

Następnym razem, gdy zamkniesz i przeładujesz terminal, powinien on załadować wszystkie Twoje preferencje bash. Zwykle dobrym pomysłem jest rozdzielenie poleceń na użyteczne nazwy plików. Na przykład z wewnątrz ~/.bashrc, powinieneś mieć source ~/.bash_aliases i umieścić wszystkie komendy aliasów w~/.bash_aliases.

 23
Author: vol7ron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-06 13:18:48

Zadziałało dla mnie stworzenie .launchd.conf ze zmiennymi, których potrzebowałem:

setenv FOO barbaz

Ten plik jest odczytywany przez launchd przy logowaniu. Możesz dodać zmienną "on the fly" do uruchomionego launchd używając:

launchctl setenv FOO barbaz`

W rzeczywistości .launchd.cond zawiera po prostu polecenia launchctl.

Zmienne ustawione w ten sposób wydają się prawidłowo obecne w aplikacjach GUI.

Jeśli próbujesz ustawić w ten sposób swoje zmienne LANG lub LC_, a zdarza ci się używać iTerm2, upewnij się, że wyłączyłeś Ustawienie "Ustaw zmienne lokalne automatycznie" na karcie Terminal używanego profilu. Wydaje się, że to nadpisuje zmienne środowiskowe launchda, a w moim przypadku ustawienie zepsutego LC_CTYPE powodowało problemy na zdalnych serwerach (które zostały przekazane zmiennej).

(środowisko.plist nadal pracuje nad moim Lwem. Możesz użyć panelu preferencji RCenvironment, aby utrzymać plik zamiast ręcznie go edytować lub wymagać Xcode. Nadal wydaje się działać na Lion, chociaż ostatnia aktualizacja pochodzi z epoki Snow Leoparda. Sprawia, że jest to moja osobiście preferowana metoda.)

 18
Author: Gilimanjaro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-26 13:04:52

Konfiguracja zmiennej środowiskowej PATH na Mac OS

Otwórz program Terminal (domyślnie znajduje się on w folderze Applications/Utilites). Uruchom następujące polecenie

touch ~/.bash_profile; open ~/.bash_profile

Spowoduje otwarcie pliku w domyślnym edytorze tekstu.

Dla ANDROID SDK jako przykład:

Musisz dodać ścieżkę do Platformy Android SDK-tools and tools directory. W moim przykładzie użyję "/Development/android-sdk-macosx" jako katalogu, w którym SDK jest zainstalowany. Dodaj następujący wiersz:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

Zapisz plik i zamknij Edytor tekstu. Wykonaj swoje .bash_profile, aby zaktualizować ścieżkę.

source ~/.bash_profile

Teraz za każdym razem, gdy otwierasz program Terminal, ścieżka będzie zawierać Android SDK.

 14
Author: Charaf JRA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-02 12:43:04

Dodawanie zmiennych ścieżki do OS X Lion

To było całkiem proste i działało dla mnie, w terminalu:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell

Podobna odpowiedź była tutaj: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

 11
Author: Yaw Joseph Etse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-07 06:23:04

Otwarty Terminal:

vi ~/.bash_profile

Zastosuj zmianę do systemu (nie ma potrzeby ponownego uruchamiania komputera):

source ~/.bash_profile

(działa również z macOS Sierra 10.12.1)

 7
Author: Do Nhu Vy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-19 09:07:21

MiaĹ 'em problem z Eclipse (zaczÄ ™ Ĺ' em jako GUI, a nie ze Skryptu) na Mavericach, Ĺźe nie ma niestandardowej Ĺ " CIEĹŹKI. Wypróbowałem wszystkie metody wymienione powyżej bez skutku. W końcu znalazłem najprostszą działającą odpowiedź opartą na podpowiedziach z tutaj :

  1. Przejdź do / Applications / eclipse / Eclipse.app / Contents folder

  2. Edytuj Info.plik plist z edytorem tekstu (lub XCode), dodaj lsenvironment słownik dla zmiennej środowiskowej z Pełny ścieżka . Zauważ, że zawiera również /usr / bin itp.:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. Przeładuj parametry dla aplikacji za pomocą

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
    
  4. Restart Eclipse

 5
Author: JaakL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:45:06

Pozwól, że zilustruję Cię na moim osobistym przykładzie w bardzo zbędny sposób.

  1. najpierw po zainstalowaniu JDK upewnij się, że jest zainstalowany. Tutaj wpisz opis obrazka
  2. Czasami macOS lub Linux automatycznie ustawia zmienną środowiskową w przeciwieństwie do systemu Windows. Ale nie zawsze tak jest. Sprawdźmy to. Tutaj wpisz opis obrazka Linia bezpośrednio po echo $JAVA_HOME będzie pusta, jeśli zmienna środowiskowa nie jest ustawiona. W Twoim przypadku musi być pusta.

  3. Teraz musimy sprawdzić czy mamy plik bash_profile. Tutaj wpisz opis obrazka Widziałeś, że w moim przypadku mamy już bash_profile. Jeśli nie, musimy utworzyć plik bash_profile.

  4. Utwórz plik bash_profile. Tutaj wpisz opis obrazka

  5. Sprawdź ponownie, aby upewnić się, że jest tam plik bash_profile. Tutaj wpisz opis obrazka

  6. Teraz otwórzmy plik bash_profile. macOS otwiera go za pomocą domyślnego TextEdit program. Tutaj wpisz opis obrazka

  7. Jest to plik, w którym przechowywane są zmienne środowiskowe. Jeśli otworzyłeś nowy plik bash_profile, musi on być pusty. W moim przypadku był już ustawiony dla języka programowania python i dystrybucji Anaconda. Teraz muszę dodać zmienną środowiskową dla Javy, która właśnie dodaje pierwszą linię. Pierwszą linię należy wpisać dosłownie. Tylko pierwsza linijka. Zapisz i zamknij Tekstedytuj. Następnie zamknij terminal. Tutaj wpisz opis obrazka

  8. Open znowu terminal. Sprawdźmy czy zmienna środowiskowa jest ustawiona. Tutaj wpisz opis obrazka

 5
Author: Sumit Pokhrel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-19 22:11:51

Wybrałem drogę idiotów. Dodano je na końcu /etc / profile

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

Utworzono folder / etc / environments Utwórz w nim plik o nazwie " oracle "lub" whatever " I dodaj do niego potrzebne rzeczy.

/etc$ cat / etc / environments.d / Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin
 4
Author: Rob in Katy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-21 22:15:23

Więcej szczegółów, które być może komuś się przydadzą:

Ze względu na moje własne poszukiwania, teraz wiem, jak ustawić zmienne środowiskowe na 7 z 8 różnych sposobów. Próbowałem dostać envar do aplikacji, którą rozwijam pod Xcode. Ustawiłem envary "tracer" za pomocą tych różnych metod, aby powiedzieć mi, które z nich dostać go do zakresu mojej aplikacji. Poniżej widać, że edytowanie "schematu" w Xcode w celu dodania argumentów działa, podobnie jak "putenv". Co go nie ustawiło zakres:~/.MACOS/środowisko.plist, PLIST specyficzny dla aplikacji,.profil, i dodanie fazy budowania do uruchomienia niestandardowego skryptu (znalazłem inny sposób w Xcode [przynajmniej], aby ustawić jeden, ale zapomniałem, co nazwałem tracer i nie mogę go teraz znaleźć; może jest na innej maszynie....)

GPU_DUMP_DEVICE_KERNEL jest 3

GPU_DUMP_TRK_ENVPLIST is (null)

GPU_DUMP_TRK_APPPLIST is (null)

GPU_DUMP_TRK_DOTPROFILE jest (null)

GPU_DUMP_TRK_RUNSCRIPT jest (null)

GPU_DUMP_TRK_SCHARGS jest 1

GPU_DUMP_TRK_PUTENV jest 1

... z drugiej strony, jeśli wejdę do terminala i powiem "set", wygląda na to, że dostaje tylko ten z .profil (myślałem, że będzie to podnieść środowiska.plist również, i jestem pewien, że kiedyś widziałem drugi Tracer envar w terminalu, więc coś pewnie poszło nie tak od tego czasu. Długi dzień....)

 1
Author: Photovore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-02 21:44:19

Krok 1: Otwórz ~/.bash_profile

Teraz otwiera się edytor tekstu:

Krok 2: Nazwa zmiennej powinna być pisana wielkimi literami. w tym przykładzie zmienna to NODE_ENV

Krok 3: export NODE_ENV=development

Zapisz i zamknij.

Uruchom ponownie system. Zrobione.

Aby sprawdzić zmienną env: otwórz terminal i wpisz

echo $NODE_ENV 
 -3
Author: Navya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-13 23:12:06