.profile
e .bash_profile
são idênticos em termos de quando devem ser executados: são executados quando você faz login. A diferença é que somente o bash executa .bash_profile
; As conchas de estilo Bourne (traço, ksh, etc.) são executadas em .profile
. O próprio Bash executa .profile
se .bash_profile
não existir.
Mesmo se você tiver o bash como seu shell de login, .profile
é frequentemente aquele que é executado quando você faz login no modo gráfico - muitas distribuições configuram o script de inicialização da sessão X para executar em sh
e carregar .profile
.
Daí o conselho para usar .profile
em vez de .bash_profile
para fazer coisas como definir variáveis de ambiente. A menos que você absolutamente precise de recursos específicos do bash, basta colocar tudo em .profile
. Mas mesmo se você fizer isso, há uma razão para manter um .bash_profile
, que é quando o bash o carrega, ele não carrega .bashrc
, mesmo que seja interativo. Portanto, para a maioria das pessoas, ~/.bash_profile
deve consistir dessas duas linhas:
. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
Você não deve executar xmodmap
de .profile
. Isso não é executado quando você abre um novo shell, mas ele é executado, por exemplo, quando você efetua login remotamente com o SSH com o encaminhamento do X11. Infelizmente, não há arquivo padrão que é carregado quando você faz login no modo gráfico. O Debian carrega ~/.xsessionrc
(acho que isso se aplica a todos os gerenciadores de exibição, exceto o Gdm, que carrega ~/.xprofile
); outras distribuições possuem configurações diferentes. Se você precisar de portabilidade de distribuição cruzada, pode ser mais fácil configurar seu ambiente de área de trabalho para executar xmodmap
quando for iniciado. Se tudo o que você está fazendo é trocar CapsLock e Ctrl, isso pode ser feito com configurações de XKB que os ambientes de desktop mais modernos fornecem uma interface.