Redhat – Changing the Prompt

When working on SSH sessions, you run into some environments that have weird prompts and colors associated with the prompt. Often I find I can’t even see the prompt where it is a dark blue on black. Maybe that is just a sign that I am getting older but it is really difficult to see.

So to change the prompt here are a list of options:

  • \a : an ASCII bell character (07)
  • \d : the date (Format: “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 + patch level (e.g., 2.00.0)
  • \w : the current working directory, with $HOME abbreviated with a tilde
  • \W : the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! : 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

In order to change the color you will need to add the escape sequence:  \e[x;ym where x = 0 or 1, zero is darker and one is lighter.

  • y = 30 – Black, 31 – Red, 32 – Green, 33 – Brown, 34 – Blue, 35 – Purple, 36 – Cyan

So to change your prompt to be Red with user @ machine short name showing the directory in brackets and a mode at the end you would do the following, note that the \e[m at the end of the string effectively ends the color change otherwise the color change will impact everything that isn’t color controlled:

export PS1=’\e[1;31m[\u@\h \W] \$ \e[m’