¿Cómo instalar y desinstalar un script obtenido en todos los shells interactivos a través de yum en Centos?

¿Cómo instalar y desinstalar un script obtenido en todos los shells interactivos a través de yum en Centos?

Me gustaría empaquetar, instalar y desinstalar un rpm que pueda agregar un mensaje de advertencia contextual en el inicio de todos los shells interactivos para todos los usuarios (en realidad, al menos tanto la sesión bash ssh como la terminal bash gnome). Básicamente, el código mostraría el mensaje de advertencia si falta un archivo.

Bueno, los candidatos son /etc/bashrc, /etc/profile, /etc/profile.d/myscript.sh, /etc/skel/.bash_profile, /etc/skel/.bashrc.

La forma más sencilla sería instalar algo /etc/profile.dpero realmente no satisface mis necesidades (sesión ssh bash).
Creo que el lugar correcto es, /etc/skel/.bashrc + exisiting .bashrcpero no me siento seguro al agregar/eliminar mi código a/de estos archivos... Tengo entendido que yumcolocar rpmy eliminar archivos; no están diseñados para modificar archivos de texto de forma segura.
Me gustaría algo como /etc/bashrc.d/...

¿Dónde deberíainstalar de forma segurael mensaje de advertencia para que pueda estar disponible en todos los shells interactivos ydesinstalado de forma segura? Por seguridad me refiero a sin eliminar nada no deseado.

Respuesta1

El archivo /etc/bashrcestá marcado como %config(noreplace)archivo en el setuprpm. Esto significa que si lo actualiza yum,noreemplázalo. Al actualizar un paquete, si hay uno actualizado /etc/bashrc, yumse creará /etc/bashrc.rpmnew. Vos tambienpodermodifíquelo de forma segura si lo desea.

Pero parece que eso no será necesario. Eche un vistazo a /etc/bashrcsu sistema centos/rhel/fedora/etc y 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
[...]

Ese código garantiza que los archivos /etc/profile.dse ejecuten tanto para shells de inicio de sesión (en cuyo caso se ejecutan desde /etc/profileellos) como para shells sin inicio de sesión (en cuyo caso este bucle se encarga de ejecutarlos).

En otras palabras, ustedyatiene un /etc/bashrc.d, y se llama /etc/profile.d.

información relacionada