Este é realmente um comportamento normal. Tudo se resume aos diferentes arquivos originados por login e scripts que não são de login. Isso tem sido coberto extensivamente em outros lugares mas, resumidamente, shells bash não-login (interativos) originam a família de arquivos bashrc ( /etc/bash.bashrc
, ~/.bashrc
) e shells de login (interativos) originam os vários arquivos de perfil ( /etc/profile
, ~/.profile
).
Portanto, seu /etc/bashrc
(que eu acho que é o equivalente de /etc/bash.bashrc
no macOS e talvez outros sistemas) é lido apenas por shells interativos que não são de login e daemons de shell remotos . Quando esse arquivo é lido, se a leitura do shell for um shell não-login (portanto, não um daemon remoto), ele também traz arquivos específicos sob /etc/profile.d
.
Os shells de login, no entanto, não lêem este arquivo, por isso não é relevante aqui. Em vez disso, eles lerão /etc/profile
e, se você verificar esse arquivo, encontrará algo parecido com isto (do arquivo /etc/profile
no meu Arch):
# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
for profile in /etc/profile.d/*.sh; do
test -r "$profile" && . "$profile"
done
unset profile
fi
É por isso que você está vendo isso em um shell de login. É porque os shells de login não funcionam através de bashrc
e, em vez disso, têm seus próprios arquivos de configuração e eles trazem os arquivos em /etc/profile.d
, mas sem excluir os shells de login.