Установите переменную среды для каждой оболочки пользователя независимо

Установите переменную среды для каждой оболочки пользователя независимо

Как установить постоянную переменную среды для каждого пользователя независимо от используемой оболочки ( bash, zshи fish)?

решение1

EDIT: согласноКакой наилучший способ настройки переменных окружения, не зависящий от дистрибутива/оболочки?, лучшее решение для этого -~/.pam_environment

EDIT: вернулся к хакерскому решению, поскольку ~/.profileне все оболочки его читают:

Все исходники оболочек /etc/profile.

Это означает, что в /etc/profile, вы можете поместить строку типа

. $HOME/.custom-profile

Затем вы можете добавить свои переменные ~/.custom-profileдля каждого пользователя

решение2

Все оболочки считывают разные файлы профилей пользователей (zsh: ~/.profile, bash: ~/.bash_profile, csh имеет только файл rc и т. д.). Поэтому вам придется изменить всех этих потенциальных кандидатов.

Однако большинство оболочек, как минимум, возвращаются к чтению ~/.profile (спасибо @terdon за указание на это!), так что именно там вы можете разместить свои экспорты.

Поскольку «вход в систему» ​​обычно осуществляется процессом, имеющим возможность изменять свои uid и gid (обычно это менеджер входа в систему, работающий от имени root), именно эти программы должны определить среду для порожденной программы (например, оболочку).

Но: существует более одного менеджера входа (ваш GDM/lightdm/KDM/... визуальный менеджер входа, getty, logind/loginct, ssh, getty...), и они считывают конфигурацию из разных файлов, так что здесь тоже нет единого пути.

Связанный контент