Como instalar e desinstalar um script originado em todos os shells interativos via yum no Centos?

Como instalar e desinstalar um script originado em todos os shells interativos via yum no Centos?

Eu gostaria de empacotar, instalar e desinstalar um rpm que possa adicionar uma mensagem de aviso contextual em todas as inicialização de shells interativos para todos os usuários (na verdade, pelo menos a sessão bash ssh e o terminal bash gnome). Basicamente, o código exibiria a mensagem de aviso se um arquivo estivesse faltando.

Bem, os candidatos são /etc/bashrc, /etc/profile, /etc/profile.d/myscript.sh, /etc/skel/.bash_profile, /etc/skel/.bashrc.

A maneira mais fácil seria instalar algo, /etc/profile.dmas isso realmente não atende à minha necessidade (sessão ssh bash).
Acho que o lugar certo é, /etc/skel/.bashrc + exisiting .bashrcmas não me sinto seguro em anexar/remover meu código desses arquivos... Meu entendimento é que yumcoloca rpme remove arquivos; eles não foram projetados para modificar arquivos de texto com segurança.
Eu gostaria de algo como /etc/bashrc.d/...

Onde devoinstalar com segurançaa mensagem de aviso para que possa estar disponível em todos os shells interativos edesinstalado com segurança? Com segurança, quero dizer sem excluir nada indesejado.

Responder1

O arquivo /etc/bashrcé marcado como %config(noreplace)arquivo no setuprpm. Isso significa que se você atualizá-lo yum,nãosubstitua-o. Ao atualizar um pacote, se houver um arquivo atualizado /etc/bashrc, yumserá criado/etc/bashrc.rpmnew um arquivo . Então vocêpodemodifique-o com segurança, se desejar.

Mas parece que isso não será necessário. Dê uma olhada /etc/bashrcno seu sistema centos/rhel/fedora/etc e você encontrará:

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
[...]

Esse código garante que os arquivos /etc/profile.dsejam executados tanto para shells de login (nesse caso, eles são executados /etc/profile) quanto para shells sem login (nesse caso, esse loop se encarrega de executá-los).

Em outras palavras, vocêtem um /etc/bashrc.d, e é chamado /etc/profile.d.

informação relacionada