Aktualizacja:
Ustawianie globalnych zmiennych środowiskowych powinno być nadal wykonywane /etc/environment
, ale, jak wskazałeś, użycie sudo -s
powoduje, że zmienne te są „znikane”.
Powodem tego jest sudo
polityka resetowania środowiska i ustawiania bezpiecznej ścieżki . Jest on domyślnie włączony:
/etc/sudoers:
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Zatem wszystko, co jest ustawione /etc/environment
na ścieżce, jest zastępowane przez sudo
.
Strona podręcznika dla sudoers
stanów:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
variables. Any variables in the caller's environment
that match the env_keep and env_check lists are then
added. The default contents of the env_keep and
env_check lists are displayed when sudo is run by root
with the -V option. If the secure_path option is set,
its value will be used for the PATH environment
variable. This flag is on by default.
W celu obejścia tego problemu można użyć sudo su
powłoki zapewniającej uprawnienia roota, ale zawierające odpowiednią ŚCIEŻKĘ.
Oryginalna odpowiedź
Powinieneś to ustawić /etc/environment
.
Spróbuj sudo YOUR_TEXT_EDITOR /etc/environment
(najpierw utwórz kopię zapasową).
Aby uzyskać więcej informacji: EnvironmentVariables
Zmienne środowiskowe dla całego systemu
Ustawienia zmiennych środowiskowych, które wpływają na system jako całość (a nie tylko na konkretnego użytkownika), nie powinny być umieszczane w żadnym z wielu skryptów na poziomie systemu, które są wykonywane po załadowaniu systemu lub sesji pulpitu, ale w
/etc/environment
- Ten plik jest przeznaczony specjalnie dla ogólnosystemowych 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.
Niepolecane:
/etc/profile
- Plik ten jest wykonywany za każdym razem, gdy wprowadzana jest powłoka logowania bash (np. Podczas logowania z konsoli lub przez ssh), a także przez DisplayManager podczas ładowania sesji pulpitu. Jest to prawdopodobnie plik, do którego będziesz się odnosił, pytając doświadczonych administratorów systemu UNIX o zmienne środowiskowe. W Ubuntu ten plik robi jednak niewiele więcej niż wywoływanie pliku /etc/bash.bashrc.
/etc/bash.bashrc
- To jest ogólnosystemowa wersja pliku ~ / .bashrc. System Ubuntu jest domyślnie skonfigurowany do uruchamiania tego pliku za każdym razem, gdy użytkownik wejdzie do powłoki lub środowiska pulpitu.