Color Coding the bash prompt

16. January 2012 07:00

 

Here is a little tip so that you can quickly tell which linux machine that you are currently logged into. The easy way to do this is to colour code the shell prompt.

 

In bash the PS1 enviroment variable controls how the prompt is formatted. On a debian squeeze install it would be set to something like this by default

 

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

 

That of course does look somewhat confusing mostly because of the escaping. The letters with a '\' at the front are telling bash to also display certain things but I will cover that in another post. Lets add some colour.

 

To add some colour we need to add a control sequence to the shell prompt this tells the terminal to enable a specific colour then at the end of the prompt turn that colour back to the default for the terminal.

 

to set the colour we need to apply this to the beginning of the enviroment variable (this is using the color red 31m)

 

\[\033[31m\]

 

Then we also need to append the close sequence to the end of the enviroment variable.

 

\[\033[0m\]

 

So the complete enviroment variable should now look like this.

 

export PS1="\[\033[31m\]\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$\[\033[0m\]"

 

Our prompt will be red. To change the colour you only need to change the starting sequence and choose from one of the following colours.

 

Black 0;30     

Blue 0;34     

Green 0;32     

Cyan 0;36     

Red 0;31     

Purple 0;35     

Brown 0;33     

Light Gray 0;37     

 

Dark Gray 1;30

Light Blue 1;34

Light Green 1;32

Light Cyan 1;36

Light Red 1;31

Light Purple 1;35

Yellow 1;33

White 1;37

 

E-mail Kick it! DZone it! del.icio.us Permalink


Automatically set the DISPLAY environment variable in SSH connection

14. January 2012 10:32

 

This is a quick tip if you use an xserver that is running remotly and you want to set the DISPLAY enviroment variable when you login to the machine using ssh. It is actually very simple to do.

 

When you use ssh it will automatically set the SSH_CLIENT enviroment variable to contain the client connection details eg the ip address port number etc.. to get this to work you will need to paste the following into your .bashrc file.

 

 

if [ ! $DISPLAY ] ; then
	if [ "$SSH_CLIENT" ] ; then
		export DISPLAY=`echo $SSH_CLIENT|cut -f1 -d\ `:0.0
	fi
fi

 

 

the above will check that the DISPLAY enviroment variable is not currently set and that the SSH_CLIENT variable is set. It will then extract the ip address from SSH_CLIENT

E-mail Kick it! DZone it! del.icio.us Permalink