I would like to make my terminal's command prompt shorter. Currently I am using Python 's virtualenv and virtualenvwrapper so that is causing lots of extra text to be displayed in my command prompt. I need to shorten that up to the bare minimum so I'd like to take this:


and ideally turn it into


or maybe something shorter perhaps. Right now I am using Gnome Terminal 2 & bash.

Any suggestions?


Your prompt can be set utilizing the PS1 envvar. For example to have a minimalist command prompt of '$" simply set PS1='$' in your .bashrc. Here are some good examples of setting a customized prompt


I guess \u:\w\$ is what you need, where \u is your username and \w is the current working directory (\W is shorter). Modify your ~/.bashrc to change the prompt.

  • 1
    +1 ... in the middle of typing pretty much the same thing. – Chris J Dec 20 '11 at 14:04

Edit your .bashrc and change the PS1 definition. See your own /etc/bashrc for an example, or see bash documentation.


Simply type in your terminal nano .bash_profile. Copy:

export PS1="\u@\h\w: "



We use a consistent header across all our machines, that has the full current working directory on the line (along with hostname and user), then a line break with just the current directory name and the prompt itself.

That way, you still get plenty of width and there is a clear distinction between different lines.

Its also coloured :)

export PS1="\e[0;35m[\u@\e[0;33s\h\e[0;35m \w] \e[m \n[\W]\$ "

Eg. Which would output

[myuser@myserver /home/myuser]

Save the line in your ~/.bashrc, ~/.bash_profile or /etc/profile to make it persistent.


I like to have my prompt in a separate line so I don't miss the info and I always have the whole line to type:

PS1=\\u@\\h\ \\w\\n\\$\ 

Inside the '$WORKON_HOME/postactivate':

case $(basename "$VIRTUAL_ENV") in
    pytutorial) VENV="pyt";;
    *) VENV="$(basename "$VIRTUAL_ENV")";;

Inside the '$HOME/.bashrc':

PS1="\u:\w\$ "

This should produce the exact output you described. Of course there are different options. I highly recommend https://wiki.archlinux.org/index.php/Color_Bash_Prompt, for more info on this topic.

The 'post_activate' file runs during virtualenv startup. The case statement allows you to replace a name with another.

Other considerations:

I personally do PS1=$_OLD_VIRTUAL_PS1 in '$WORKON_HOME/postactivate' and use $(basename "$VIRTUAL_ENV") inside my PS1.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.