Jaki jest właściwy sposób modyfikowania zmiennych środowiskowych takich jak PATH w OS X?
Spojrzałem trochę na Google i znalazłem trzy różne pliki do edycji:
- / etc / paths
- ~ / .profile
- ~ / .tcshrc
Nie mam nawet niektórych z tych plików i jestem prawie pewien, że .tcshrc jest zły, ponieważ OS X używa teraz bash. Gdzie są zdefiniowane te zmienne, zwłaszcza PATH?
Używam OS X 10.5 (Leopard).
macos
bash
path
environment-variables
Paul Wicks
źródło
źródło
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
uruchomić aplikację GUI z nowym ustawionym środowiskiem systemowym.Odpowiedzi:
Bruno jest na dobrej drodze. Przeprowadziłem szeroko zakrojone badania i jeśli chcesz ustawić zmienne, które są dostępne we wszystkich aplikacjach GUI, twoją jedyną opcją jest
/etc/launchd.conf
.Pamiętaj, że environment.plist nie działa w przypadku aplikacji uruchomionych przez Spotlight. Dokumentuje to tutaj Steve Sexton .
Otwórz monit terminalu
Wpisz
sudo vi /etc/launchd.conf
(uwaga: ten plik może jeszcze nie istnieć)Umieść zawartość w pliku jak poniżej
Zapisz zmiany w vi i uruchom ponownie komputer Mac. Lub użyj polecenia
grep
/xargs
pokazanego w powyższym komentarzu do kodu.Udowodnij, że twoje zmienne działają, otwierając okno terminala i wpisując,
export
a powinieneś zobaczyć swoje nowe zmienne. Będą one również dostępne w IntelliJ IDEA i innych aplikacjach GUI uruchamianych przez Spotlight.źródło
launchd.conf
jest jednokierunkowe, ale wymaga ponownego uruchomienia (w celu ponownego uruchomienia). Jeśli chcesz uniknąć ponownego uruchomienia, zobacz moją odpowiedź stackoverflow.com/questions/135688/...Jak ustawić środowisko dla nowych procesów uruchomionych przez Spotlight (bez konieczności ponownego uruchamiania)
Możesz ustawić środowisko używane przez uruchomione (i, co za tym idzie, wszystko, co rozpoczęło się od Spotlight) za pomocą
launchctl setenv
. Na przykład, aby ustawić ścieżkę:Lub jeśli chcesz ustawić swoją ścieżkę w
.bashrc
podobny sposób, to niech zostanie dublowana w uruchomionym:Nie ma potrzeby ponownego uruchamiania, ale musisz ponownie uruchomić aplikację, jeśli chcesz, aby odebrała zmienione środowisko.
Obejmuje to wszelkie powłoki już uruchomione w Terminal.app, chociaż jeśli tam jesteś, możesz ustawić środowisko bardziej bezpośrednio, np. Za pomocą
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
bash lub zsh.Jak zachować zmiany po ponownym uruchomieniu
Aby zachować zmiany po ponownym uruchomieniu , możesz ustawić zmienne środowiskowe
/etc/launchd.conf
, na przykład:launchd.conf
jest wykonywany automatycznie po ponownym uruchomieniu.Jeśli chcesz, aby zmiany zaczęły obowiązywać, powinieneś użyć tego polecenia do ponownego przetworzenia
launchctl.conf
(dzięki @mklement za wskazówkę!)Możesz dowiedzieć się więcej o tym
launchctl
i jak się ładujelaunchd.conf
za pomocą poleceniaman launchctl
.źródło
environment.plist
nie jest możliwe.etc/launchd.conf
przed restart byłoby wykorzystanie podejścia w @ odpowiedź MatthewMcCullough za:egrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
.Aż do OS X 10.7 (Lion) możesz je ustawić w:
Widzieć:
W przypadku PATH w terminalu powinieneś być w stanie ustawić
.bash_profile
lub.profile
(prawdopodobnie będziesz musiał go jednak utworzyć)W systemie OS X 10.8 (Mountain Lion) i nowszych wersjach należy użyć
launchd
ilaunchctl
.źródło
preferences.plist
było idealne w systemie OS X 10.5, ponieważ w tamtym czasiepreferences.plist
nie było czytane dla aplikacji uruchomionych przez centrum uwagi, zobacz komentarz Louisa do odpowiedzi Matthew i email.esm.psu.edu/pipermail/macosx-emacs/2010-May /002113.html . W systemie OS X 10.6environment.plist
działa tak, jak powinno.Rozwiązanie dla aplikacji wiersza poleceń i GUI z jednego źródła (działa z Mac OS X 10.10 (Yosemite) i Mac OS X 10.11 (El Capitan))
Załóżmy, że masz takie definicje zmiennych środowiskowych
~/.bash_profile
w poniższym fragmencie:Potrzebujemy agenta uruchamiającego, który będzie działał przy każdym logowaniu i w dowolnym momencie na żądanie, aby załadować te zmienne do sesji użytkownika. Będziemy także potrzebować skryptu powłoki, aby przeanalizować te definicje i zbudować niezbędne polecenia do wykonania przez agenta.
Utwórz plik z
plist
przyrostkiem (np. O nazwieosx-env-sync.plist
) w~/Library/LaunchAgents/
katalogu o następującej treści:-l
parametr ma tutaj kluczowe znaczenie; jest to konieczne do wykonania skryptu powłoki za pomocą powłoki logowania, dlatego~/.bash_profile
jest on pozyskiwany w pierwszej kolejności przed wykonaniem skryptu.Teraz skrypt powłoki. Utwórz go w
~/.osx-env-sync.sh
następującej treści:Upewnij się, że skrypt powłoki jest wykonywalny:
Teraz załaduj agenta uruchamiania dla bieżącej sesji:
(Re) Uruchom aplikację GUI i sprawdź, czy może odczytać zmienne środowiskowe.
Konfiguracja jest trwała. Przetrwa restarty i ponowne logowania.
Jeśli po początkowej konfiguracji (którą właśnie zrobiłeś), jeśli chcesz ponownie odzwierciedlić zmiany w
~/.bash_profile
całym swoim środowisku, ponowne uruchomienielaunchctl load ...
polecenia nie wykona tego, co chcesz; zamiast tego pojawi się ostrzeżenie:<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
Aby ponownie załadować zmienne środowiskowe bez przechodzenia przez proces wylogowania / logowania, wykonaj następujące czynności:
Na koniec należy ponownie uruchomić już uruchomione aplikacje (w tym Terminal.app), aby uświadomić im zmiany.
Przesłałem również kod i objaśnienia do projektu GitHub: osx-env-sync .
Mam nadzieję, że będzie to najlepsze rozwiązanie, przynajmniej dla najnowszych wersji OS X (Yosemite i El Capitan).
źródło
Zrobić:
Plik może nie istnieć (jeśli nie, możesz go po prostu utworzyć).
Wpisz to i zapisz plik:
Biegać
źródło
export
jest tym, co chciałem zasugerować, ponieważ BASH nie obsługujesetenv
Zasadniczo istnieją dwa problemy do rozwiązania w przypadku zmiennych środowiskowych w OS X. Pierwszy dotyczy wywoływania programów z Spotlight (ikona lupy po prawej stronie menu / paska stanu Mac), a drugi wywoływania programów z Docka . Wywoływanie funkcji z aplikacji Terminal / narzędzie jest trywialny, ponieważ czyta środowiska przed standardowych lokalizacjach Shell (
~/.profile
,~/.bash_profile
,~/.bashrc
, itd.)Podczas wywoływania programów z Docku, użyj
~/.MacOSX/environment.plist
tam , gdzie<dict>
element zawiera sekwencję<key>KEY</key><string>theValue</string>
elementów.Podczas wywoływania programów z Spotlight, upewnij się, że uruchomione zostało skonfigurowane ze wszystkimi wymaganymi ustawieniami klucza / wartości.
Aby rozwiązać oba problemy jednocześnie, używam elementu logowania (ustawionego za pomocą narzędzia Preferencje systemowe) na moim koncie użytkownika. Element logowania to skrypt bash, który wywołuje funkcję wypaczania Emacsa, chociaż można oczywiście użyć swojego ulubionego narzędzia skryptowego, aby osiągnąć to samo. Takie podejście ma tę dodatkową zaletę, że działa w dowolnym momencie i nie wymaga ponownego uruchomienia, tzn. Można edytować
~/.profile
, uruchamiać element logowania w jakiejś powłoce i wyświetlać zmiany dla nowo wywoływanych programów z Docka lub Spotlight.Detale:
Element logowania:
~/bin/macosx-startup
Funkcja Emacs lisp:
~/lib/emacs/elisp/macosx/envionment-support.el
UWAGA: To rozwiązanie stanowi mieszankę tych, które pojawiły się przed dodaniem mojej, szczególnie tej oferowanej przez Matta Curtisa, ale celowo starałem się zachować
~/.bash_profile
niezależność mojej platformy treści i umieścićlaunchd
środowisko (tylko dla komputerów Mac) w osobnym skrypcie .źródło
Kolejnym darmowym rozwiązaniem typu open source Mac OS X 10.8 (Mountain Lion) Panel preferencji / environment.plist jest EnvPane .
Kod źródłowy EnvPane dostępny na GitHub . EnvPane wygląda na to, że ma porównywalne funkcje do RCEnvironment , jednak wydaje się, że może natychmiast zaktualizować przechowywane zmienne, tj. Bez konieczności restartu lub logowania, co jest mile widziane.
Jak stwierdził deweloper:
Oświadczenie: Nie jestem w żaden sposób związany z deweloperem lub jego projektem.
PS Podoba mi się nazwa (brzmi jak „Ends Pain”).
źródło
Aktualizacja (2017-08-04)
Począwszy od (przynajmniej) macOS 10.12.6 (Sierra) ta metoda wydaje się przestać działać dla Apache httpd (zarówno dla, jak
system
i dlauser
opcjilaunchctl config
). Wydaje się, że nie dotyczy to innych programów. Można sobie wyobrazić, że jest to błąd w httpd.Oryginalna odpowiedź
Dotyczy to OS X 10.10+ (10.11+ szczególnie ze względu na tryb rootowania, w którym
/usr/bin
nie można go już zapisać).Czytałem w wielu miejscach, że użycie
launchctl setenv PATH <new path>
ustawieniaPATH
zmiennej nie działa z powodu błędu w OS X (co wydaje się prawdziwe z własnego doświadczenia). Odkryłem, żePATH
można ustawić inny sposób dla aplikacji, które nie są uruchamiane z powłoki :Ta opcja jest udokumentowana na stronie manuala launchctl:
Potwierdziłem, że współpracuję z aplikacją GUI uruchomioną z Findera (który używa
getenv
do pobrania PATH). Pamiętaj, że musisz to zrobić tylko raz, a zmiana będzie trwała po ponownym uruchomieniu komputera.źródło
sudo launchctl procinfo <gui-pid>
pokazuje nowo ustawionePATH
środowisko. Alesudo launchctl config user path <new path>
tak naprawdę ustawione dla wszystkich użytkowników ... (potwierdzone przez dodanie nowego użytkownika i użycie konsoli Pythona w Sublime Text)sudo launchctl config user path
dzieje się to po raz pierwszy (co wydaje się zakładać?).launchctl
sposób nie pozwalają na dowolne ustawienie zmiennych środowiskowych.PATH
Zmienna jest wyjątek.Na Mountain Lion wszystko
/etc/paths
i/etc/launchd.conf
edycja nie przynosi ż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łem nową parę klucz / dykt o nazwie:
(patrz: Dokumentacja LaunchServicesKeys w Apple )
Teraz aplikacja (w moim przypadku Sourcetree) używa 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
Info.plist
plik aplikacji, aplikacja nie załaduje się:LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
Chociaż odpowiedzi tutaj nie są „złe”, dodam jeszcze jedno: nigdy nie wprowadzaj zmian zmiennych środowiskowych w OS X, które wpływają na „wszystkie procesy”, a nawet poza powłoką, dla wszystkich procesów uruchamianych interaktywnie przez danego użytkownika.
Z mojego doświadczenia wynika, że globalne zmiany zmiennych środowiskowych, takich jak PATH, dla wszystkich procesów są bardziej narażone na uszkodzenie w OS X niż w Windows. Powodem jest to, że wiele aplikacji OS X i innego oprogramowania (w tym, być może szczególnie elementy samego systemu operacyjnego), opiera się na narzędziach wiersza poleceń UNIX pod maską i zakłada zachowanie wersji tych narzędzi dostarczanych wraz z systemem, oraz niekoniecznie używaj do tego bezwzględnych ścieżek (podobne komentarze dotyczą dynamicznie ładowanych bibliotek i zmiennych środowiskowych DYLD_ *). Weźmy na przykład pod uwagę, że najwyżej oceniane odpowiedzi na różne pytania dotyczące przepełnienia stosu dotyczące zastąpienia dostarczonych przez OS X wersji interpreterów, takich jak Python i Ruby, zazwyczaj mówią „nie rób tego”.
Pod tym względem OS X tak naprawdę nie różni się od innych systemów operacyjnych typu UNIX (np. Linux, FreeBSD i Solaris); najbardziej prawdopodobnym powodem, dla którego Apple nie zapewnia łatwego sposobu, jest to, że psuje rzeczy . W zakresie, w jakim system Windows nie jest tak podatny na te problemy, wynika to z dwóch rzeczy: (1) Oprogramowanie Windows zwykle nie korzysta z narzędzi wiersza poleceń w takim stopniu, jak oprogramowanie UNIX, oraz (2) Microsoft miał tak obszerna historia zarówno „piekła DLL”, jak i problemów związanych z bezpieczeństwem spowodowanych zmianami wpływającymi na wszystkie procesy, które zmieniły zachowanie dynamicznego ładowania w nowszych wersjach systemu Windows, aby ograniczyć wpływ „globalnych” opcji konfiguracji, takich jak PATH.
„Lame” lub nie, będziesz mieć znacznie bardziej stabilny system, jeśli ograniczysz takie zmiany do mniejszych zakresów.
źródło
Czasami wszystkie poprzednie odpowiedzi po prostu nie działają. Jeśli chcesz mieć dostęp do zmiennej systemowej (np.
M2_HOME
) W Eclipse lub IntelliJ IDEA, jedyną rzeczą, która działa dla mnie w tym przypadku, jest:Najpierw (krok 1) edytuj,
/etc/launchd.conf
aby zawierał taki wiersz: „wartość VAR setenv”, a następnie (krok 2) uruchom ponownie.Po prostu modyfikacja .bash_profile nie będzie działać, ponieważ w OS X aplikacje nie są uruchamiane tak jak w innych systemach uniksowych; nie dziedziczą zmiennych powłoki rodzica. Wszystkie pozostałe modyfikacje nie będą działać z nieznanego mi powodu. Może ktoś inny może to wyjaśnić.
źródło
Po przeszukaniu okienka preferencji Zmienne środowiskowe i odkryciu, że link jest zepsuty, a wyszukiwanie w witrynie Apple wydaje się wskazywać, że o nim zapomniały ... Zacząłem z powrotem na trop nieuchwytnego procesu uruchamiania.
W moim systemie (Mac OS X 10.6.8) wydaje się, że zmienne zdefiniowane w environment.plist są niezawodnie eksportowane do aplikacji uruchamianych z Spotlight (poprzez uruchomienie). Mam problem z tym, że te zmienne nie są eksportowane do nowych sesji bash w Terminalu. Tzn. Mam odwrotny problem, jak tu przedstawiono.
UWAGA: environment.plist wygląda jak JSON, a nie XML, jak opisano wcześniej
Udało mi się uzyskać aplikacje Spotlight do zobaczenia zmiennych, edytując ~ / MacOSX / environment.plist i mogłem zmusić te same zmienne do nowej sesji terminala, dodając następujące elementy do mojego pliku .profile:
źródło
man launchd
,man launchctl
iman launchd.conf
w oknie terminala. Cieszę się, że Apple aktualizuje strony podręcznika, nawet jeśli biblioteka programistów Mac jest nieco opóźniona.Wszelkie plików bash starcie -
~/.bashrc
,~/.bash_profile
,~/.profile
. Istnieje również jakiś dziwny plik nazwany~/.MacOSX/environment.plist
zmiennymi środowiskowymi w aplikacjach GUI.źródło
Podobnie jak odpowiedź Matta Curtisa, ustawiam zmienne środowiskowe za pomocą launchctl, ale zawijam je w funkcję o nazwie export, dzięki czemu za każdym razem, gdy eksportuję zmienną w normalny sposób w moim pliku .bash_profile, jest ona również ustawiana przez launchctl. Oto co robię:
Mój .bash_profile składa się wyłącznie z jednej linii (jest to tylko preferencja osobista).
Mój .bashrc ma to:
Powyższe spowoduje przeciążenie wbudowanego „eksportu” Bash i wyeksportuje wszystko normalnie (zauważysz, że eksportuję za jego pomocą „eksport”!), A następnie odpowiednio ustawię je dla środowisk aplikacji OS X poprzez launchctl, niezależnie od tego, czy korzystasz z któregokolwiek z poniższych:
W ten sposób nie muszę wysyłać każdej zmiennej do launchctl za każdym razem i mogę po prostu skonfigurować mój .bash_profile / .bashrc tak, jak chcę. Otwórz okno terminala, sprawdź zmienne środowiskowe, które Cię interesują
launchctl getenv myVar
, zmień coś w .bash_profile / .bashrc, zamknij okno terminala i otwórz je ponownie, sprawdź zmienną ponownie za pomocą launchctl i voila, to się zmieniło.Ponownie, podobnie jak inne rozwiązania dla świata post-Mountain Lion, aby wszelkie nowe zmienne środowiskowe były dostępne dla aplikacji, musisz je uruchomić lub ponownie uruchomić po zmianie.
źródło
Oto bardzo prosty sposób na robienie tego, co chcesz. W moim przypadku Gradle zaczął działać (dla Androida Studio).
Uruchom następujące polecenie:
sudo nano /etc/paths
lubsudo vim /etc/paths
Po wyświetleniu monitu wprowadź hasło.
Otwórz nowe okno terminala, a następnie wpisz:
echo $PATH
Powinieneś zobaczyć nową ścieżkę dołączoną na końcu ŚCIEŻKI.
Otrzymałem te szczegóły z tego postu:
Dodaj do ŚCIEŻKI w systemie Mac OS X 10.8 Mountain Lion i nowszych
źródło
Myślę, że OP szuka prostego rozwiązania podobnego do systemu Windows.
Proszę bardzo:
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
źródło
Aby być zwięzłym i jasnym na temat tego, do czego przeznaczony jest każdy plik
~/.profile
jest pozyskiwany przy każdym uruchomieniu Terminal.app~/.bashrc
jest tam, gdzie „tradycyjnie” ustawione są wszystkie instrukcje eksportu dla środowiska Bash/etc/paths
to główny plik w systemie Mac OS, który zawiera listę domyślnych ścieżek do budowania zmiennej środowiskowej PATH dla wszystkich użytkowników/etc/paths.d/
zawiera pliki, które zawierają dodatkowe ścieżki wyszukiwaniaProgramy nieterminalne nie dziedziczą ogólnosystemowych zmiennych PATH i MANPATH, które robi twój terminal! Aby ustawić środowisko dla wszystkich procesów uruchomionych przez konkretnego użytkownika, a tym samym udostępnić zmienne środowiskowe aplikacjom graficznym Mac OS X, zmienne te należy zdefiniować w
~/.MacOSX/environment.plist
(Pytania techniczne Apple QA1067)Użyj następującego polecenia, aby zsynchronizować
environment.plist
z/etc/paths
:źródło
/etc/launchd.conf nie jest używany w systemie OS X 10.10 (Yosemite), OS X 10.11 (El Capitan), macOS 10.12 (Sierra) ani macOS 10.13 (High Sierra).
Ze strony podręcznika
launchctl
:Metoda opisana w tym pytaniu Odpowiedź działa dla mnie (po ponownym uruchomieniu): aplikacje uruchomione z Docka lub ze Spotlight dziedziczą zmienne środowiskowe, które ustawiłem
~/Library/LaunchAgents/my.startup.plist
. (W moim przypadku potrzebne do zestawuLANG
, abyen_US.UTF-8
za pomocą wtyczki Sublime Text).źródło
$PATH
Zmienna jest też przedmiotempath_helper
, który z kolei korzysta z/etc/paths
plików i plików w/etc/paths.d
.Bardziej dokładny opis można znaleźć w PATH i innych problemach środowiskowych w Leopardzie (2008-11)
źródło
To proste:
Edytuj ~ / .profile i umieść zmienne w następujący sposób
W pliku umieść:
Zapisz (: wq)
Uruchom ponownie terminal (wyjdź i otwórz go ponownie)
Upewnij się, że wszystko jest w porządku:
źródło
W przypadku modyfikacji dla jednego użytkownika użyj
~/.profile
tych wymienionych. Poniższy link wyjaśnia, kiedy Bash odczytuje różne pliki.http://telin.ugent.be/~slippens/drupal/bashrc_and_others
Jeśli chcesz ustawić zmienną środowiskową dla aplikacji GUI, potrzebujesz pliku ~ / .MacOSX / environment.plist
źródło
Nie jestem pewien co do plików
/etc/paths
i~/.MacOSX/environment.plist
. To są nowe.Ale dzięki Bash powinieneś wiedzieć, że
.bashrc
jest wykonywany przy każdym nowym wywołaniu powłoki i.bash_profile
jest wykonywany tylko raz przy starcie.Nie wiem, jak często to się dzieje w systemie Mac OS X. Myślę, że rozróżnienie to załamało się, gdy system okien uruchomił wszystko.
Osobiście eliminuję zamieszanie, tworząc
.bashrc
plik ze wszystkim, czego potrzebuję, a następnie:źródło
Oprócz sugerowanych podejść należy zauważyć, że przynajmniej w OS X 10.5 (Leopard) ustawione zmienne
launchd.conf
zostaną scalone z ustawionymi w nim ustawieniami.profile
. Przypuszczam, że prawdopodobnie dotyczy to również ustawień~/.MacOSX/environment.plist
, ale nie zweryfikowałem.źródło
Skonfiguruj zmienną środowiskową PATH w systemie Mac OS
Otwórz program Terminal (domyślnie znajduje się w folderze Aplikacje / Narzędzia). Uruchom następujące polecenie
Spowoduje to otwarcie pliku w domyślnym edytorze tekstu.
Dla Androida SDK jako przykład:
Musisz dodać ścieżkę do katalogu narzędzi i narzędzi platformy Android SDK. W moim przykładzie użyję „/ Development / android-sdk-macosx” jako katalogu, w którym jest zainstalowany zestaw SDK. Dodaj następujący wiersz:
Zapisz plik i zamknij edytor tekstu. Uruchom plik .bash_profile, aby zaktualizować ŚCIEŻKĘ:
Teraz za każdym razem, gdy otworzysz program Terminal, PATH będzie zawierać zestaw Android SDK.
źródło
Po prostu zrobiłem to naprawdę łatwo i szybko. Najpierw utwórz plik ~ / .bash_profile z terminala:
następnie
Dodaj
zachowajcie dokumentację i gotowe.
źródło
To całkiem proste. Edytuj plik
.profile
(vi, nano , Sublime Text lub inny edytor tekstu). Możesz go znaleźć w~/
katalogu (katalog użytkownika) i ustawić w ten sposób:Przykład z domu Java:
Zapisz go i wróć do terminala.
Możesz go ponownie załadować za pomocą:
Lub zamknij i otwórz okno terminala.
źródło
W grze występują dwa rodzaje pocisków.
Ważne jest, aby zrozumieć, że tutaj z Bash, plik
.bashrc
jest tylko do odczytu przez powłokę, która jest zarówno interaktywne i bez logowania, a znajdziecie, że ludzie często ładować.bashrc
w.bash_profile
celu pokonania tego ograniczenia.Teraz, gdy masz podstawową wiedzę, przejdźmy do tego, jak radziłbym ci ją skonfigurować.
.bash_file:
źródło
Powłoki logowania
Powłoka najpierw wykonuje polecenia w pliku
/etc/profile
. Użytkownik pracujący z uprawnieniami administratora może skonfigurować ten plik w celu ustalenia domyślnych cech systemowych dla użytkowników korzystających z Bash.Następny wygląda Shell
~/.bash_profile
,~/.bash_login
oraz~/.profile
(~ / jest krótko- dłoń do swojego katalogu domowego), w tej kolejności, wykonując polecenia w pierwszym z tych plików, które znajdzie. Możesz wstawić polecenia do jednego z tych plików, aby zastąpić ustawienia domyślne ustawione w/etc/profile
. Powłoka działająca na wirtualnym terminalu nie wykonuje poleceń w tych plikach.Po wylogowaniu bash wykonuje polecenia z
~/.bash_logout
pliku. Ten plik często zawiera polecenia, które czyszczą po sesji, takie jak te, które usuwają pliki tymczasowe.Interaktywne powłoki nielogowania
Wiele
~/.bashrc
plików nie wywołuje bezpośrednio bash/etc/bashrc
. Ta konfiguracja umożliwia użytkownikowi pracującemu z uprawnieniami roota ustalenie domyślnych ogólnosystemowych cech dla nielogowanych powłok bash.Interaktywna powłoka niezalogowana wykonuje polecenia w
~/.bashrc
pliku. Zazwyczaj plik startowy dla powłoki logowania, takiej jak.bash_profile
, uruchamia ten plik, więc zarówno powłoki logowania, jak i inne niż loginy uruchamiają polecenia.bashrc
.Ponieważ polecenia
.bashrc
mogą być wykonywane wiele razy, a podpowłoki dziedziczą wyeksportowane zmienne, dobrym pomysłem jest umieszczenie poleceń, które dodają do istniejących zmiennych w.bash_profile
pliku.źródło
Cała magia w iOS idzie tylko z użyciem
source
pliku, w którym eksportujesz zmienne środowiskowe.Na przykład:
Możesz utworzyć taki plik:
Zapisz ten plik jako
bimbom.env
i zróbsource ./bimbom.ev
. Voilá, masz zmienne środowiskowe.Sprawdź je za pomocą:
źródło
W przypadku Bash spróbuj dodać zmienne środowiskowe do pliku,
/etc/profile
aby były dostępne dla wszystkich użytkowników. Nie trzeba ponownie uruchamiać komputera, wystarczy rozpocząć nową sesję terminala.źródło