Existem dois motivos relacionados pelos quais os aliases nem sempre funcionam quando colocados no arquivo .profile
. A primeira é que o arquivo .profile
(ou .bash_profile
) é executado apenas para um shell de login. Se você está começando o bash em uma janela de terminal em X, seu emulador de terminal (por exemplo, gnome-termanl) provavelmente não está executando o bash como um shell de login. [A maioria tem uma opção para mudar isso se você quiser, mas o padrão (para o gnome-termal mesmo assim) é não executá-lo como um shell de login.]
O shell será um shell interativo e, portanto, .bashrc
será executado.
No entanto, normalmente o bash foi executado como um shell de login quando a sessão X estava sendo iniciada. Portanto, se houver comandos alias em .profile
, eles serão executados juntamente com variáveis de ambiente de configuração, como o PATH, etc. Quando uma janela de terminal é aberta, uma nova instância de bash é executada para solicitar e executar comandos nessa janela de terminal. Ao contrário das variáveis de ambiente, os aliases não podem ser exportados de uma instância do bash para uma nova iniciada por ela. Portanto, os aliases não são passados para o novo shell.
Para ver isso, experimente este experimento:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
Observe que .bashrc
não é executado pelo bash quando é iniciado como um shell de login. Portanto, colocar seus aliases não funcionará sempre, a menos que seu .bashrc
seja originado de seu .profile
, o que é uma prática muito comum.