
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.d
mas isso realmente não atende à minha necessidade (sessão ssh bash).
Acho que o lugar certo é, /etc/skel/.bashrc + exisiting .bashrc
mas não me sinto seguro em anexar/remover meu código desses arquivos... Meu entendimento é que yum
coloca rpm
e 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 setup
rpm. Isso significa que se você atualizá-lo yum
,nãosubstitua-o. Ao atualizar um pacote, se houver um arquivo atualizado /etc/bashrc
, yum
será 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/bashrc
no 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.d
sejam 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êjátem um /etc/bashrc.d
, e é chamado /etc/profile.d
.