Я создал файл с именем x.sh
в каталоге /etc/profile.d/
, поэтому он должен быть доступен для всех пользователей. Я ожидал, что когда я изменю текущего пользователя в терминале (вошедшего в систему пользователя) с помощью команды sudo su other_user
, те переменные, которые я установил в файле x.sh
, должны быть доступны, но это не так. Как настроить переменные так, чтобы они были доступны по желанию?
/etc/profile
(и, следовательно, /etc/profile.d
) читается для входных оболочек. sudo su other_user
не запускает оболочку входа. Это плохая практика, она оставляет окружающую среду загрязненной переменными от первоначального пользователя . Вместо этого вы должны выполнить одну из этих команд:
sudo -iu other_user
sudo su - other_user
Обе эти загрузки загружают /etc/profile
, потому что они запускают оболочки входа в систему, и обе запускаются с относительно чистой средой.
В идеале переменные должны быть установлены в /etc/environment
, если это возможно. Этот файл должен быть прочитан su
, поэтому переменные там будут доступны независимо от того, запущена ли оболочка входа в систему. Однако этот файл не поддерживает синтаксис оболочки, поэтому, если вам нужен сложный код оболочки для установки переменных, вы не сможете его использовать.
После Как навсегда установить переменные среды · U & amp; L bash
загрузит
/etc/profile
, так что это подходящее место для добавления переменных, эффективных для всех пользователей.