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.
visudo
(wymaga uprawnień roota), aby edytować ustawienia bezpiecznej ścieżki. nie jest to zalecana praktyka. Jest tu tylko dla edukacji.sudo -i
symuluje logowanie (w podobny sposób jaksudo su -
) i daje ci te zmienne środowiskowe.źródło