如何在 Centos 上通过 yum 安装和卸载来自所有交互式 shell 的脚本?

如何在 Centos 上通过 yum 安装和卸载来自所有交互式 shell 的脚本?

我想打包、安装和卸载一个 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/bashrcyum会创建/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

相关内容