Há dois motivos relacionados pelos quais os aliases nem sempre funcionam quando inseridos no .profile
arquivo. A primeira é que o arquivo .profile
(ou .bash_profile
) é executado apenas para um shell de logon. Se você está iniciando o bash em uma janela de terminal no 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 alterar isso, se você quiser, mas o padrão (para o gnome-termal de qualquer maneira) 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 alternativos, .profile
eles serão executados juntamente com a definição de variáveis de ambiente como PATH etc. Quando uma janela do terminal é aberta, uma nova instância do bash é executada para solicitar e executar comandos nessa janela do terminal. Diferentemente 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 transmitidos para o novo shell.
Para ver isso, tente 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 logon. Portanto, colocar seus apelidos ali nem sempre funcionará, a menos que você .bashrc
seja originário do seu .profile
, o que é uma prática muito comum.
gl
? O terminal? A GUI?