Set Up BASH PS1 and Colors for Dreamhost

Written by Mark Sanborn: Jun 11, 2008

The PS1 is the text that you see to the left on the command prompt. Often times it will read something like, mark@debian~/$. This text reveals a lot of relevent information. The first part, ‘mark’ tells us the username. The ‘@debian’ tells us that the machine’s name is ‘debian’. The ‘~/’ is the current working directory and the ‘$’ means that we are using a non-root user.

The problem with Dreamhost is that their default shell only contains a bare minimum PS1 without colors. The default Dreamhost shell only contains the hostname. Without having the working directory in the PS1 we would have to type, ‘pwd’ to know which directory we are in. This is incredibly annoying and this is one of the first things I change. The other thing I do is add colors to the ‘ls’ command. This makes it easier for us to distinguish between files and folders.

Editing the .bash_profile

To edit .bash_profile you open it up in your favorite text editor, mine is vim.

vim ~/.bash_profile

This will open the the text file, ‘.bash_profile’. On Dreamhost the default file will only contain two lines:

# ~/.bash_profile: executed by bash(1) for login shells. umask 002

Below this line is where we will make our modifications to our bash profile that will give us colors and a more descriptive PS1.

I am used to using the default Debian colored PS1. Since Dreamhost uses debian it makes sense to me to change this to:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

You can also customize the PS1 colors of the bash prompt to your own preference.

This will give you a nice green prompt with username@host:/current/path$ syntax. This will allow us to easily see which directory we are working in without having to type ‘pwd’ all the time.

Adding color for directory listing

To add color to the ‘ls’ command you will need to add this to your ‘.bash_profile’.

if [ "$TERM" != "dumb" ]; then eval "dircolors -b" alias ls='ls --color=auto' fi

This will first check to see if the terminal supports colors and then map an alias to ls.

Need to print shipping labels on your site?

Checkout my product RocketShipIt for simple easy-to-use developer tools for UPS™ FedEx™ USPS™ and more.