/etc/profile
e os arquivos em /etc/profile.d
são lidos por shells de login. Isso é bom para fazer coisas como configurar variáveis de ambiente, que são herdadas por processos filhos: dessa forma eles são definidos em todos os programas da sessão. Não é bom para configurações de shell, como definições de função, pois elas estão disponíveis apenas nessa instância de shell. Para configurações de shell, você precisa usar um arquivo de configuração de shell em vez de um arquivo de configuração de sessão. Para o bash, isso é ~/.bashrc
e (nos sistemas em que está ativado) /etc/bash.bashrc
.
Para obter mais informações, consulte Existe um arquivo equivalente" .bashrc "lido por todos os shells? e Diferença entre o login shell e o non-login shell?