如何在 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

相關內容