Isso está correto: PS1
só é significativo em instâncias interativas do bash, portanto, ele deve ser definido em ~/.bashrc
e não deve ser exportado. PS1
também é significativo em outros shells, mas tem um significado diferente, porque as expansões de prompt diferem entre os shells. De fato, mesmo entre instâncias de bash, PS1
pode ter diferentes significados, pois o significado depende das opções de shell (pelo menos promptvars
).
A exportação de PS1
para o ambiente de .profile
é um retrocesso para a década de 1970, quando havia apenas um shell que o usava (o shell Bourne) e não tinha um arquivo de configuração. Ele ainda funciona hoje se você sempre usar o mesmo shell e nunca configurá-lo de forma diferente. Mas todos os shells modernos que não são projetados apenas para script (csh, ksh, bash, zsh,…) lêem um arquivo de configuração quando iniciados interativamente ( .cshrc
, .kshrc
, .bashrc
, .zshrc
,…), então o método dos anos 70 não é mais necessário. Definir PS1
e outras configurações específicas do shell em um arquivo específico do shell, e não exportá-lo para o ambiente, evita quebrar coisas quando você usa uma configuração de shell diferente ou um shell diferente ou um terminal diferente que não é capaz de mostrar sua habitual vivacidade pronta. A configuração de PS1
em um arquivo específico do shell funciona o tempo todo, ao passo que defini-lo em .profile
e exportá-lo só funciona em casos “simples”, portanto não há motivos para não fazer da maneira certa, mas há muitos maus tutoriais em toda a web e até configurações padrão ruins em distribuições. C'est la vie .