
Я хотел бы упаковать, установить и удалить RPM-пакет, который может добавлять контекстное предупреждающее сообщение при запуске всех интерактивных оболочек для всех пользователей (на самом деле, по крайней мере, как сеанс bash ssh, так и терминал bash gnome). По сути, код будет отображать предупреждающее сообщение, если файл отсутствует.
Ну, кандидаты — это /etc/bashrc
, /etc/profile
, /etc/profile.d/myscript.sh
, /etc/skel/.bash_profile
, /etc/skel/.bashrc
.
Самый простой способ — установить что-то в , /etc/profile.d
но это не совсем соответствует моим потребностям (ssh bash session).
Я думаю, что это правильное место, /etc/skel/.bashrc + exisiting .bashrc
но я не чувствую себя в безопасности, добавляя/удаляя свой код в/из этих файлов... Насколько я понимаю, yum
и rpm
puts и remove файлы; они не предназначены для безопасного изменения текстовых файлов.
Я бы хотел что-то вроде /etc/bashrc.d/
...
Где я долженбезопасно установитьпредупреждающее сообщение, чтобы оно было доступно во всех интерактивных оболочках ибезопасно удалено? Под безопасностью я подразумеваю отсутствие удаления чего-либо нежелательного.
решение1
Файл /etc/bashrc
отмечен как %config(noreplace)
файл в setup
rpm. Это означает, что если вы его обновите, yum
будетнетзаменить его. При обновлении пакета, если есть обновленный /etc/bashrc
, yum
создаст /etc/bashrc.rpmnew
. Так что выможетпри желании можно безопасно изменить его.
Но, похоже, это не понадобится. Взгляните на /etc/bashrc
свою систему centos/rhel/fedora/etc, и вы найдете:
if ! shopt -q login_shell ; then # We're not a login shell
[...]
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
[...]
Этот код гарантирует, что файлы /etc/profile.d
запускаются как для оболочек входа в систему (в этом случае они запускаются из /etc/profile
других оболочек), так и для оболочек без входа в систему (в этом случае этот цикл заботится об их запуске).
Другими словами, выужеесть /etc/bashrc.d
, и он называется /etc/profile.d
.