Depende de como você inicia seu shell. Como outros já disseram, um shell de login irá carregar o seu perfil (ele irá procurar por .bash_profile primeiro e, em seguida, tentará .profile). Se encontrar um destes, carrega-os. Um shell não-login (interativo ou não interativo) irá gerar o .bashrc.
Eu sugiro colocar tudo em .bashrc. A divisão .profile / .bashrc era meio arbitrária e fazia mais sentido nos velhos tempos do UNIX quando tty não era apenas um nome de dispositivo e significava um TeleType real. Era para começar certas coisas (como checar o e-mail) no login 'principal' para um servidor, e apenas coisas normais de configuração para outros shells. Na maioria dos Linuxes você irá logar agora, você não está realmente logando em um shell, enquanto você está logando em alguma interface gráfica (KDE, gnome, CDE 'shudder'). Os "processos de login do spawn" agora são atendidos pelo seu gerenciador de sessões. É muito menos relevante agora.
Minha sugestão:
Faça o seu .profile consistir apenas:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
como a primeira linha de .bashrc, proteja-se contra coisas estranhas que acontecem ao executar um script bash saltando antes:
[[ $- != *i* ]] && return