This is my /etc/prompt file, which I source from /etc/profile. It uses colors by name, machine name, dir name, colors depending on the user, and is mostly a shameless copy of some parts of the manpage of bash:
#
# PROMPTING
# When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the sec-
# ondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized
# by inserting a number of backslash-escaped special characters that are decoded as follows:
# \a an ASCII bell character (07)
# \d the date in "Weekday Month Date" format (e.g., "Tue May 26")
# \D{format}
# the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format
# results in a locale-specific time representation. The braces are required
# \e an ASCII escape character (033)
# \h the hostname up to the first `.'
# \H the hostname
# \j the number of jobs currently managed by the shell
# \l the basename of the shell's terminal device name
# \n newline
# \r carriage return
# \s the name of the shell, the basename of $0 (the portion following the final slash)
# \t the current time in 24-hour HH:MM:SS format
# \T the current time in 12-hour HH:MM:SS format
# \@ the current time in 12-hour am/pm format
# \A the current time in 24-hour HH:MM format
# \u the username of the current user
# \v the version of bash (e.g., 2.00)
# \V the release of bash, version + patchelvel (e.g., 2.00.0)
# \w the current working directory
# \W the basename of the current working directory
# \! the history number of this command
# \# the command number of this command
# \$ if the effective UID is 0, a #, otherwise a $
# \nnn the character corresponding to the octal number nnn
# \\ a backslash
# \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence
# into the prompt
# \] end a sequence of non-printing characters
#
# The command number and the history number are usually different: the history number of a command is its position in
# the history list, which may include commands restored from the history file (see HISTORY below), while the command
# number is the position in the sequence of commands executed during the current shell session. After the string is
#
# colors:
# \[...\] needed, so the shell knows, that this isn't printable output, and newlines are placed at the right position.
#
# ANSI COLORS
CRE="\[
[K\]"
NORMAL="\[[0;39m\]"
# RED: Failure or error message
RED="\[[1;31m\]"
# GREEN: Success message
GREEN="\[[1;32m\]"
# YELLOW: Descriptions
YELLOW="\[[1;33m\]"
# BLUE: System messages
BLUE="\[[1;34m\]"
# MAGENTA: Found devices or drivers
MAGENTA="\[[1;35m\]"
# CYAN: Questions
CYAN="\[[1;36m\]"
# BOLD WHITE: Hint
WHITE="\[[1;37m\]"
#
# default:
# postgres, oracle
#
# PS1=$BLUE"asux]->"$NORMAL\\w"$BLUE ΓΈ $NORMAL"
PS1=$BLUE"asux]:"$NORMAL\\w"$BLUE > $NORMAL"
#
# root, stefan:
#
case "$UID" in
'0')
PS1=$RED"asux:"$NORMAL\\w"$RED # $NORMAL"
;;
'1000')
PS1=$GREEN"asux:"$BLUE\\w$YELLOW" > "$NORMAL
;;
# default)
# ;;
esac
asux is my machine name, replace it with yours. It is common usage to use different colors (red for root) and prompts (> for user, # for root) for normal users and super user. If you often use ssh, the machine name is helpful, and different colors, if you just use 2-3 different hosts.
I have a different color for user 'postgresql' or 'oracle' but I don't need it often any more.
