Depende de como você inicia seu shell. Como já foi dito, um shell de login carregará seu perfil (ele procurará .bash_profile primeiro e depois tentará .profile). Se encontrar um desses, carrega-os. Um shell sem logon (interativo ou não interativo) irá originar .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. Ele foi criado para iniciar certas coisas (como verificar e-mails) no login 'principal' de um servidor, e apenas itens de configuração normais para outros shells. Na maioria dos Linux, você fará logon agora, não está realmente fazendo login em um shell, pois está acessando alguma interface gráfica (KDE, gnome, CDE 'shudder'). Os "processos de login de geração" agora são resolvidos pelo seu gerenciador de sessões. É muito menos relevante agora.
Minha sugestão: faça seu .profile consistir apenas em:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
como a primeira linha do .bashrc, proteja-se de coisas estranhas que acontecem ao executar um script bash saltando cedo:
[[ $- != *i* ]] && return