Centos で yum を介してすべての対話型シェルでソースされたスクリプトをインストールおよびアンインストールするにはどうすればよいですか?

Centos で yum を介してすべての対話型シェルでソースされたスクリプトをインストールおよびアンインストールするにはどうすればよいですか?

すべてのユーザー (実際には、少なくとも bash ssh セッションと bash gnome ターミナルの両方) のすべての対話型シェルの起動時にコンテキスト警告メッセージを追加できる rpm をパッケージ化、インストール、アンインストールしたいと考えています。基本的に、コードはファイルが見つからない場合に警告メッセージを表示します。

さて、候補は/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/...

どこに行けばいいですか安全にインストール警告メッセージはすべての対話型シェルで利用できるようにし、安全にアンインストールされました? 安全というのは、不要なものを削除しないことを意味します。

答え1

このファイルはrpmでファイル/etc/bashrcとしてマークされています。つまり、これを更新した場合、%config(noreplace)setupyumない置き換えてください。パッケージをアップグレードするときに、更新された がある場合は/etc/bashrcyum作成されます/etc/bashrc.rpmnew。そのため、できる必要に応じて安全に修正してください。

しかし、それは必要ないようです。/etc/bashrcCentos/rhel/fedora などのシステムを見てみると、次のことがわかります。

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

関連情報