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
0I 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.
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.