Я пытаюсь написать ответную роль, которую необходимо добавить в PATH
. Для bash я могу легко добавить файл в /etc/profile.d
. Но Zsh, очевидно, не идет с /etc/zsh.d
. Есть ли другой рекомендуемый метод?
Обратите внимание, что я, очевидно, мог бы написать в .zshenv
, но это возможно для многих систем, и я не хочу касаться файлов, установленных системой. Все в ~/
также не работает, так как я хочу изменить PATH
для всей системы.
В масштабе всей системы zprofile
(/etc/zsh/zprofile
) в Ubuntu содержит:
# /etc/zsh/zprofile: system-wide .zprofile file for zsh(1).
#
# This file is sourced only for login shells (i.e. shells
# invoked with "-" as the first character of argv[0], and
# shells invoked with the -l flag.)
#
# Global Order: zshenv, zprofile, zshrc, zlogin
emulate sh -c 'source /etc/profile'
/etc/profile
, в свою очередь, источники .sh
файлы в /etc/profile.d
программно:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
/etc/profile.d
не является особенным ни в каком другом уважении.
Дополнения к PATH
Вы делаете в /etc/profile.d
должен влиять на оболочки входа в систему zsh. И для пользователей GUI, источников LightDM /etc/profile
, так любые дополнения к PATH
должно быть доступно любой программе, которая не сбрасывает его, включая zsh
.
IMO дополнения В масштабе всей системы к PATH
должен быть сделан с помощью pam_env
(любой в /etc/environment
или /etc/security/pam_env.conf
, или пользовательские файлы, указанные дополнительным правилом PAM).