Odpowiedzi:
Myślę, że strona wiki społeczności na temat zmiennych środowiskowych pomoże ci uporządkować
Aby dodać do odpowiedzi sagarchalise, mogę podsumować to, co sugeruje link, jako odpowiednie miejsce dla ustawień.
/etc/environment
/etc/profile
lub/etc/bash.bashrc
Ze strony:
/etc/environment
[...] jest przeznaczony w szczególności do systemowych ustawień zmiennych środowiskowych. To nie jest plik skryptu, ale raczej składa się z wyrażeń przypisania, po jednym w wierszu. W szczególności ten plik przechowuje ustawienia regionalne i ustawienia ścieżki w całym systemie.
Korzystanie /etc/profile
jest bardzo uniksowym sposobem, ale jego funkcjonalność jest znacznie zmniejszona w Ubuntu. Istnieje tylko po to, aby wskazywać /etc/bash.bashrc
i zbierać wpisy /etc/profile.d
.
W moim systemie jedynym interesującym wpisem w profilu.d jest /etc/profile.d/bash_completion.sh
.
Zalecana była poprzednia wersja strony Ubuntu ~/.pam_environment
, ale obecnie strona sugeruje, że jeśli to nie zadziała, powinieneś użyć
~/.profile
- Jest to prawdopodobnie najlepszy plik do umieszczania przypisań zmiennych środowiskowych, ponieważ jest on wykonywany automatycznie przez DisplayManager podczas sesji pulpitu procesu uruchamiania, a także przez powłokę logowania, gdy loguje się z konsoli tekstowej.
~/.bash_profile
lub ~./bash_login
- Jeśli jeden z nich istnieje, bash wykonuje go zamiast ~/.profile
kiedy bash jest uruchamiany jako powłoka logowania. Bash wolą ~/.bash_profile
się ~/.bash_login
. [...] Te pliki domyślnie nie będą miały wpływu na sesję graficzną. ”
~/.bashrc
- „... może być najłatwiejszym miejscem do ustawiania zmiennych”. /etc/environment
i kiedy? Wydaje się, że nie działa z cronem, nawet gdy używaszSHELL=/bin/bash
/etc/environment
polubić JAVA_HOME="/opt/java"
i ANT_HOME="/opt/ant"
jak to zrobić
Masz:
/ etc / profile: ogólnosystemowy plik .profile dla powłoki Bourne'a (sh (1)) i powłok kompatybilnych z Bourne (bash (1), ksh (1), ash (1), ...).
które działają w Lucid i Maverick
/etc/profile.d/*.sh
jeśli jest obecny i jeśli powłoka użytkownika jest bash:
/etc/bash.bashrc
W środowisku użytkownika istnieje myląca tablica specyficzna dla powłoki i tego, czy jest ona uważana za „powłokę logowania”. Jeśli powłoka jest bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
dla sh / dash:
$HOME/.profile
dla Zsh nawet nie spróbuję tego zrozumieć .
Zgodnie z zaleceniami na https://help.ubuntu.com/community/EnvironmentVariables :
Globalne zmienne środowiskowe, które mają wpływać na wszystkich użytkowników, powinny wejść /etc/environment
.
Należy ustawić zmienne środowiskowe specyficzne dla użytkownika ~/.pam_environment
.
Unikaj plików profilu i rc, aby ustawić zmienne środowiskowe w Ubuntu. Sprawili mi więcej bólów głowy, niż są tego warte.
Łatwiej to jednak powiedzieć niż zrobić;)
Możliwe, że napotkasz tę samą lukę konfiguracyjną, która istniała dla mnie. Zobacz obejście dla zaszyfrowanego domu poniżej.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
Dlaczego brzydka ścieżka statyczna? ${PATH}
nie zadziałałoby dla mnie. Zablokowałem swój login kilka razy, próbując go obejść, więc trzymam się brzydkiej statycznej kopii ustawień domyślnych :)
W wersjach Ubuntu do wersji Precise 12.04 Beta 2 włącznie, jeśli używasz zaszyfrowanego katalogu domowego, musisz go zmodyfikować, /etc/pam.d/common-session
aby go załadować ~/.pam_environment
. To rozwiązanie najwyraźniej działa we wcześniejszych wersjach, ale go nie testowałem.
Wydaje się, że jest to problem z zaszyfrowanymi katalogami domowymi. dodałem
wymagana sesja pam_env.so
na końcu /etc/pam.d/common-session, a teraz ~ / .pam_environment zostaje odczytany. W innym systemie bez zaszyfrowanych katalogów domowych (także 10.04) obejście nie jest potrzebne. Być może w moim przypadku system próbuje odczytać ~ / .pam_environment zanim zostanie odszyfrowany.
Na podstawie mojej odpowiedzi na Super User: https://superuser.com/a/408373/66856
${HOME}
nie będzie działać. Brak rozszerzenia w .pam_environment
.
.pam_environment
, ale HOME
zwykle nie jest ustawione tak wcześnie. Gdyby ten wiersz był przeczytany DEFAULT=${PATH}/Applications/jdk
, zobaczyłbyś wartość PATH
wstawionej do niego.