The explanations in this HOWTO have shown how to make PS1 environment variables, or how to incorporate those PS1 and PS2 strings into functions that could be called by ~/.bashrc or as a theme by the bashprompt package.
Using the bashprompt package, you would type bashprompt -i
to see
a list of available themes. To set the prompt in future login shells
(primarily the console, but also telnet and Xterms, depending on how your
Xterms are set up), you would type bashprompt -l themename
.
bashprompt then modifies your ~/.bash_profile to call the requested
theme when it starts. To set the prompt in future subshells (usually
Xterms, rxvt, etc.), you type bashprompt -s themename
, and
bashprompt modifies your ~/.bashrc file to call the appropriate theme
at startup.
See also Setting the PS? Strings Permanently for Johan Kullstam's note regarding the importance of putting the PS? strings in ~/.bashrc .
You can change the prompt in your current terminal (using the example
"elite" function above) by typing "source elite
" followed by
"elite
" (assuming that the elite function file is the working
directory). This is somewhat cumbersome, and leaves you with an extra
function (elite) in your environment space - if you want to clean up the
environment, you would have to type "unset elite
" as well. This
would seem like an ideal candidate for a small shell script, but a script
doesn't work here because the script cannot change the environment of your
current shell: it can only change the environment of the subshell it runs
in. As soon as the script stops, the subshell goes away, and the changes
the script made to the environment are gone. What can change
environment variables of your current shell are environment functions. The
bashprompt package puts a function called "callbashprompt" into your
environment, and, while they don't document it, it can be called to load
any bashprompt theme on the fly. It looks in the theme directory it
installed (the theme you're calling has to be there), sources the function
you asked for, loads the function, and then unsets the function, thus
keeping your environment uncluttered. "callbashprompt" wasn't intended to
be used this way, and has no error checking, but if you keep that in mind,
it works quite well.