Eu colocaria variáveis de ambiente em .bash_login ou .bash_profile, já que elas são (quando exportadas) herdadas para subshells e não precisam ser redefinidas para cada invocação de shell. Não que redefini-los custaria praticamente qualquer coisa, mas no caso eu quero definir um envvar para outra coisa pela duração de um subshell. Isso é difícil de fazer se o .bashrc substituir a configuração.
Para todo o resto (incluindo funções), você quer colocá-los em .bashrc, já que .bash_login e amigos não serão lidos por subshells. .bashrc geralmente será, através de um dos scripts de perfil / login.
É claro que seu uso do PS1 é um pouco diferente, já que você quer uma função que o altere.
(Bash é um pouco engraçado com os arquivos de inicialização. Os shells de login lêem bash_profile e friends, mas não bashrc. Shells não-login funcionam exatamente o oposto. Então não há arquivos que serão lidos por todas as invocações de shell, a menos que bashrc seja originado pelos scripts de perfil. link )
A escolha entre .profile, .bash_profile e .bash_login é completamente sua, e escolher entre configuração global e configuração por usuário depende, obviamente, de se você deseja alterar o comportamento de todos os usuários ou apenas um.
Quanto aos erros de digitação, mantenha um shell aberto e teste os scripts após alterá-los. :) Não que um simples erro de digitação importe, na pior das hipóteses ele irá parar de ler o script de inicialização e / ou atrapalhar o resto das configurações. A menos que você tenha uma "saída" no seu .bashrc por algum motivo.