Executei o seguinte comando para criar um arquivo de alias no CentOS 7.9:
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/alias-ll.sh
Depois que reiniciei o shell, "type ll" indicou que esse alias não funcionava. Achei que isso poderia ter ocorrido devido a outro arquivo em /etc/profile.d substituindo o alias, então renomeei o arquivo para "z-alias-ll.sh". Então reiniciei o shell e desta vez, "type ll" indicou que o alias funcionou com sucesso.
Porém quando faço o mesmo no Ubuntu 20.04, “type ll” indica que não funciona. Havia alguns nomes de arquivos como "Z99-cloud-locale-test.sh" e "Z99-cloudinit-warnings.sh" em /etc/profile.d no Ubuntu, então tentei estes:
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/ZZ99-z-alias-ll.sh
echo 'alias ll="ls -alhF --color=auto"' > /etc/profile.d/Z99Zalias-ll.sh
No entanto, quando eu reinicio o terminal, "type ll" ainda diz, "ll tem o alias de `ls -alF'".
Se eu criar outro arquivo de alias:
echo 'alias lltest="ls -alhF --color=auto"' > /etc/profile.d/alias-lltest.sh
Depois de reiniciar o terminal, "type lltest" indica que este arquivo está sendo originado. Então, acho que os arquivos de alias em /etc/profile.d estão sendo originados, mas o alias de "ll" está sendo substituído em algum lugar.
Já que tentei prefixar com "ZZ99" etc. Não acho que seja um problema de classificação de strings, como no CentOS 7.9, onde tive que adicionar o prefixo "z-" ao nome do arquivo para evitar outro arquivo /etc/profile.d de ter precedência. No entanto, não tenho 100% de certeza.
Qual arquivo, script, etc. pode ter precedência sobre os arquivos de alias que criei em /etc/profile.d? O que tem precedência sobre /etc/profile.d no Ubuntu, em termos de definição de variáveis de ambiente?
Eu tentei no Ubuntu 20.04 e no Ubuntu 22.10, usando novas gotas do Digital Ocean.
Responder1
Geralmente, as configurações do usuário têm precedência sobre as configurações do sistema. Isso também é válido para aliases. Os aliases definidos pelo usuário têm precedência sobre os aliases definidos no nível do sistema. Por padrão no Ubuntu, alias ll='ls -alF'
é definido no .bashrc
arquivo do usuário, substituindo assim qualquer alias que você possa ter definido em outro lugar.