How can I make my terminal's command prompt shorter to increase line realestate?

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:

(pytutorial)sez@sez-laptop:~/.virtualenvs/nettuts/firstblog$

and ideally turn it into

(pyt)sez:~/.virtualenvs/nettuts/firstblog$

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

Any suggestions?

7 Answers

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

0

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

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: "

Save.

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]
[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")";;
esac
PS1="($VENV)$_OLD_VIRTUAL_PS1"

Inside the '$HOME/.bashrc':

PS1="\u:\w\$ "

This should produce the exact output you described. Of course there are different options. I highly recommend , 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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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

You Might Also Like