TL; DR : basta colocar a chamada em PS1 em ~/.bashrc ou chamar subshells com -l flag
A resposta de Zanna sugere apropriadamente para definir PS1 em ~/.bashrc como origem de shells interativos.
Você pode, no entanto, usar -l flag para tratar o subshell como shell de login:
DIR:/xieerqi|04:25|skolodya@ubuntu:
$ echo "PS1='TEST$ '" > ~/.profile
DIR:/xieerqi|04:25|skolodya@ubuntu:
$ bash
xieerqi@eagle:~$ exit
DIR:/xieerqi|04:25|skolodya@ubuntu:
$ bash -l
TEST$
O "Porquê"
Is that normal? Isn't the whole point of exporting a variable to make it accessible from all the child processes forked from that shell? Why it doesn't apply to this stiuation?
Sim, esse é o comportamento esperado. Quando você exporta algo, as variáveis devem se propagar para baixo, para subcamadas.
xieerqi@eagle:~$ export VAR=303
xieerqi@eagle:~$ bash
xieerqi@eagle:~$ echo $VAR
303
xieerqi@eagle:~$ ksh
$ echo $VAR
303
O problema novamente é ~/.bashrc . O arquivo padrão ~/.bashrc possui linhas que substituem PS1 . Então, sua variável foi exportada, mas depois usa uma vez o shell interativo% soured~/.bashrc. O exemplo dessa situação foi observado por a resposta de Gilles em uma das perguntas em Unix Stackexchange .
Quanto a ~/.profile , na verdade, é incentivado a definir e exportar variáveis de ambiente de lá e é uma prática frequente.
Para responder ao comentário de Zanna sobre o motivo pelo qual o primeiro shell foi colorido, acredito que essa seja a causa:
When bash is invoked as an interactive login shell . . . it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. (from bash man page, emphasis added)
O que aconteceu é que, quando você faz login, bash encontra ~/.bash_profile e o origina como o primeiro arquivo encontrado. Os outros shells são shells não-login interativos, então somente ~/.bashrc é originado depois disso.