![如何在 Centos 上通过 yum 安装和卸载来自所有交互式 shell 的脚本?](https://linux22.com/image/97888/%E5%A6%82%E4%BD%95%E5%9C%A8%20Centos%20%E4%B8%8A%E9%80%9A%E8%BF%87%20yum%20%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%B8%E8%BD%BD%E6%9D%A5%E8%87%AA%E6%89%80%E6%9C%89%E4%BA%A4%E4%BA%92%E5%BC%8F%20shell%20%E7%9A%84%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我想打包、安装和卸载一个 rpm,它可以在所有用户的所有交互式 shell 启动时添加上下文警告消息(实际上,至少是 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 会话)。
我认为正确的地方是,/etc/skel/.bashrc + exisiting .bashrc
但我对在这些文件中添加/删除代码感到不安全……我的理解是,yum
放置rpm
和删除文件;它们并非旨在安全地修改文本文件。
我想要一些像/etc/bashrc.d/
...
我该去哪里安全安装警告消息,以便它可以在所有交互式 shell 中使用,并且安全卸载?我所说的安全是指不删除任何不需要的内容。
答案1
该文件/etc/bashrc
被标记为rpm%config(noreplace)
中的文件setup
。这意味着如果您更新它,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
[...]
该代码确保其中的文件既针对登录 shell(在这种情况下运行它们)又针对非登录 shell(在这种情况下该循环负责运行它们)/etc/profile.d
运行。/etc/profile
换句话说,你已经有一个/etc/bashrc.d
,它的名字叫/etc/profile.d
。