Various people and distributions set their PS? strings in different places.
The most common places are /etc/profile, /etc/bashrc, ~/.bash_profile, and
~/.bashrc . Johan Kullstam (johan19@idt.net) writes:
the PS1 string should be set in .bashrc. this is because
non-interactive bashes go out of their way to unset PS1. the bash man
page tells how the presence or absence of PS1 is a good way of knowing
whether one is in an interactive vs non-interactive (ie script) bash
session.
the way i realized this is that startx is a bash script. what this
means is, startx will wipe out your prompt. when you set PS1 in
.profile (or .bash_profile), login at console, fire up X via startx,
your PS1 gets nuked in the process leaving you with the default
prompt.
one workaround is to launch xterms and rxvts with the -ls option to
force them to read .profile. but any time a shell is called via a
non-interactive shell-script middleman PS1 is lost. system(3) uses sh
-c which if sh is bash will kill PS1. a better way is to place the
PS1 definition in .bashrc. this is read every time bash starts and is
where interactive things - eg PS1 should go.
therefore it should be stressed that PS1=..blah.. should be in .bashrc
and not .profile.
I tried to duplicate the problem he explains, and encountered a
different one: my PROMPT_COMMAND variable (which will be introduced later)
was blown away. My knowledge in this area is somewhat shaky, so I'm going
to go with what Johan says.