Tenho um , criado cuidadosamente .zshrc
, no qual não quero ter nada que eu não tenha adicionado manualmente. É possível que algum programa, instalador ou comando adicione algumas linhas lá automaticamente? (Isto é, bem no começo ou bem no final?)
Em outras palavras, entendo que isso echo foo > ~/.zshrc
irá modificá-lo, mas existem outros cenários semelhantes?
Certamente é possível : qualquer programa que você execute tem permissão para modificar seu
.zshrc
. Mas na prática, é claro, a maioria dos programas não o fará.Instaladores e configurações diretamente relacionadas ao zsh provavelmente modificarão
.zshrc
, por exemplo, o instalador para oh-my-zsh. Isso é bem justificado: você está pedindo por isso.Alguns instaladores de software que vêm na forma de um script de shell e são destinados a serem usados em uma conta de usuário modificam o
.bashrc
ou do usuário.zshrc
. Eles fazem isso para configurar conclusões de shell,PATH
entradas, aliases, funções, etc. Isso nem sempre é justificado, e o que eles fazem nem sempre é compatível com sua configuração.PATH
em particular não deveria viver em.zshrc
(mais do que.bashrc
) , mas essa bagunça veio para ficar. Conclusões e funções são de certa forma justificadas porque não há umafpath
entrada padrão no diretório home do usuário.Na prática, vi isso com instaladores para ambientes de desenvolvimento, como
opam init
o (que pede confirmação) ou o nvm'sinstall.sh
(que é simplesmente rude).Para manter o controle do que você fez manualmente, uma possibilidade é criar
~/.zshrc
um arquivo muito pequeno que apenas origine outro arquivo, por exemploEntão, se todo o resto aparecer em
~/.zshrc
, você saberá que foi adicionado automaticamente.Outra abordagem é manter seu
.zshrc
sob controle de versão. Entãogit diff
ou algo parecido revelará mudanças não confirmadas.Você pode combinar as duas abordagens.
Por padrão, não há nada que impeça os aplicativos de modificar os arquivos de configuração da sua conta.
Se isso for realmente um grande problema, sugiro copiar seus arquivos de configuração para um diretório, verificar tudo no git e criar um link simbólico para onde eles pertencem.
Dessa forma, se algo os modificar, você poderá ver rapidamente o que foi alterado (git diff) e aceitar ou reverter com a mesma rapidez.
Como alternativa, você pode tentar
chmod gou-w ~/.zshrc
, e aplicativos ingênuos que tentam fazer alterações falharão, mas ainda é possível.Similarmente, se isso for super crítico e você tiver acesso root, você pode alterar as permissões para que nem você possa alterá-lo. Você pode fazer isso com
chattr +i
para torná-lo imutável (se suportado) ou apenas alterar a propriedade (chown root .zshrc
), mas algumas coisas podem ficar infelizes com você não possuir seus próprios arquivos de configuração, e ele ainda pode ser renomeado.