Как установить переменную окружения для всех пользователей, даже когда выполняете sudo su?

Я создал файл с именем x.sh в каталоге /etc/profile.d/, поэтому он должен быть доступен для всех пользователей. Я ожидал, что когда я изменю текущего пользователя в терминале (вошедшего в систему пользователя) с помощью команды sudo su other_user, те переменные, которые я установил в файле x.sh, должны быть доступны, но это не так. Как настроить переменные так, чтобы они были доступны по желанию?

3
задан 20 November 2017 в 12:11

2 ответа

/etc/profile (и, следовательно, /etc/profile.d) читается для входных оболочек. sudo su other_user не запускает оболочку входа. Это плохая практика, она оставляет окружающую среду загрязненной переменными от первоначального пользователя . Вместо этого вы должны выполнить одну из этих команд:

sudo -iu other_user
sudo su - other_user

Обе эти загрузки загружают /etc/profile, потому что они запускают оболочки входа в систему, и обе запускаются с относительно чистой средой.

В идеале переменные должны быть установлены в /etc/environment, если это возможно. Этот файл должен быть прочитан su, поэтому переменные там будут доступны независимо от того, запущена ли оболочка входа в систему. Однако этот файл не поддерживает синтаксис оболочки, поэтому, если вам нужен сложный код оболочки для установки переменных, вы не сможете его использовать.

5
ответ дан 20 November 2017 в 12:11

После Как навсегда установить переменные среды · U & amp; L bash загрузит

/etc/profile

, так что это подходящее место для добавления переменных, эффективных для всех пользователей.

2
ответ дан 20 November 2017 в 12:11

Другие вопросы по тегам:

Похожие вопросы: