Change Linux Shell Prompt With Different Colors

December 19, 2012 | By
| 1 Reply More

Customizing your work way is always exciting and funny too, and it adds spice to your work, how about going with GNOME or KDE based terminal apps, well, the prize earned with command level efforts always beats the GUI perspective and its always true for Linux freaks who attain salvation in linux consoles, so lets explore and have some fun.

Your current prompt setting is stored in PS1 shell variable.There are other variables too, like PS2, PS3 and PS4.

Bash displays the primary prompt PS1 when it is ready to read a command, and the secondary 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.

Before we get started, let’s talk for a minute about how you customize your bash prompt. It’s not quite the same as you’re average application: there’s no preferences panel. Your customizations are stored in a file. If you’re on Linux (or using Cygwin), that will be your .bashrc file or .bash_profile file. In both cases, this file is kept in your home directory (if you aren’t sure where that is for a Cygwin install, run the command echo $HOME). Note that I’ll only refer to the .bashrc file from here on out, but use the.bash_profile.

Customizing PS1

Use echo command to display current BASH prompt:

$ echo $PS
[\\u@\h \\W]\\$

By default the command prompt is set to: [\u@\h \W]\$. Backslash-escaped special characters are decoded as follows

 \u: Display the current username
 \h: Display the hostname
 \W: Print the current working directory

Modify BASH prompt

Use export command to setup a new shell prompt

$ export PS1="[\\u@\\H \\W \\@]\\$"

 \H: Display FQDN hostname
 \@: Display current time in 12-hour am/pm formats

Let summarise the custom parameters here to make more PS1 changes.

We can use more built-in variables in the string we assign to PS1 to include helpful information in the prompt; here’s a few more useful ones:

 \d: Date
 \h: Host
 \n: Newline
 \t: Time
 \u: Username
 \W: Current working directory
 \w: Full path to current directory

Adding colors

To add colors to the shell prompt use the following export command syntax

'\e[x;ym $PS1 \e[m'

 \e[ Start color scheme
 x;y Color pair to use (x;y)
 $PS1 is your shell prompt
 \e[m Stop color scheme


To set a red color prompt, type the command

$ export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

List of Color code

Color Code
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33

Replace digit 0 with 1 to get light color version.

Detailed color code index for reference

 PS1='\e[0;30m' # Black - Regular
 PS1='\e[0;31m' # Red
 PS1='\e[0;32m' # Green
 PS1='\e[0;33m' # Yellow
 PS1='\e[0;34m' # Blue
 PS1='\e[0;35m' # Purple
 PS1='\e[0;36m' # Cyan
 PS1='\e[0;37m' # White
 PS1='\e[1;30m' # Black - Bold
 PS1='\e[1;31m' # Red
 PS1='\e[1;32m' # Green
 PS1='\e[1;33m' # Yellow
 PS1='\e[1;34m' # Blue
 PS1='\e[1;35m' # Purple
 PS1='\e[1;36m' # Cyan
 PS1='\e[1;37m' # White
 PS1='\e[4;30m' # Black - Underline
 PS1='\e[4;31m' # Red
 PS1='\e[4;32m' # Green
 PS1='\e[4;33m' # Yellow
 PS1='\e[4;34m' # Blue
 PS1='\e[4;35m' # Purple
 PS1='\e[4;36m' # Cyan
 PS1='\e[4;37m' # White
 PS1='\e[40m' # Black - Background
 PS1='\e[41m' # Red
 PS1='\e[42m' # Green
 PS1='\e[43m' # Yellow
 PS1='\e[44m' # Blue
 PS1='\e[45m' # Purple
 PS1='\e[46m' # Cyan
 PS1='\e[47m' # White
 PS1='\e[0m' # Text Reset

Make the prompt setting permanent

Your new shell prompt setting is temporary i.e. when you logout setting will be lost. To have it set everytime you login to your workstation add above export command to your .bash_profile file or .bashrc file, so repeating again the same concepts, but its good to repeat sometimes,

$ cd
$ vi .bash_profile


$ vi .bashrc

Append export line

export PS1="\e[0;31m[\u@\h \W]\$ \e[m"

Save and close the file.

Using tput command

You can also use tput command. For example display RED prompt use tput as follows

export PS1="\[$(tput setaf 1)\]\u@\h:\w $ \[$(tput sgr0)\]"

handy tput commands

 tput bold - Bold effect
 tput rev - Display inverse colors
 tput sgr0 - Reset everything
 tput setaf {CODE}- Set foreground color, see color {CODE} below
 tput setab {CODE}- Set background color, see color {CODE} below

Colors {code} code for tput command

Color {code} Color

0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White


Tagged With :

Free Linux Ebook to Download

Comments (1)

Trackback URL | Comments RSS Feed

  1. Adrien Massy says:

    Finally a very comphrehensive and explicit howto.

    Thank you for the work.

Leave a Reply

Commenting Policy:
Promotion of your products ? Comment gets deleted.
All comments are subject to moderation.