sexy-bash-prompt
Bash prompt with colors, git statuses, and git branches.
Providing a unique symbol for every combination of a dirty, unpulled, and unpushed git
branch.
Forked from a gist by gf3.
Installation
One line install:
(cd /tmp && git clone --depth 1 https://github.com/twolfson/sexy-bash-prompt && cd sexy-bash-prompt && make install) && source ~/.bashrc
My colors don't look as advertised
If you are seeing a screen like this:
Then, your TERM
environment variable may never have been configured. Run the script below to prefix our prompt with a TERM
setup
cat > /tmp/.bash_prompt_term <<EOF
#!/usr/bin/env bash
# Determine what type of terminal we are using for \`tput\`
if [[ \$COLORTERM = gnome-* && \$TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then export TERM=gnome-256color
elif [[ \$TERM != dumb ]] && infocmp xterm-256color >/dev/null 2>&1; then export TERM=xterm-256color
fi
EOF
chmod +x /tmp/.bash_prompt_term
cat ~/.bash_prompt >> /tmp/.bash_prompt_term
cp /tmp/.bash_prompt_term ~/.bash_prompt
rm /tmp/.bash_prompt_term
Manual install
$ # Clone the repository
$ git clone --depth 1 https://github.com/twolfson/sexy-bash-prompt
Cloning into 'sexy-bash-prompt'...
...
Resolving deltas: 100% (13/13), done.
$ # Go into the directory
$ cd sexy-bash-prompt
$ # Install the script
$ make install
# Copying .bash_prompt to ~/.bash_prompt
cp --force .bash_prompt ~/.bash_prompt
# Adding ~/.bash_prompt to ~/.bashrc
echo ". ~/.bash_prompt" >> ~/.bashrc
# twolfson/sexy-bash-prompt installation complete!
$ # Rerun your ~/.bashrc
$ source ~/.bashrc
todd at Euclid in ~/github/sexy-bash-prompt on master
$ # Your PS1 should now look like this!
Configuration
The styles can be customized by editing .bash_prompt
directly, or by setting the following environment variables:
PROMPT_USER_COLOR
- Color for username (e.g.todd
)PROMPT_PREPOSITION_COLOR
- Color for 'at', 'in', 'on'PROMPT_DEVICE_COLOR
- Color for machine name (e.g.Euclid
)PROMPT_DIR_COLOR
- Color for directory (e.g.~/github/sexy-bash-prompt
)PROMPT_GIT_STATUS_COLOR
- Color for git branch and symbol (e.g.master
)PROMPT_SYMBOL_COLOR
- Color for prompt symbol (e.g.$
)
You can set colors via tput
or ANSI escape codes. For example:
# Inside your `.bashrc` or `.bash_profile`
PROMPT_USER_COLOR="$(tput bold)$(tput setaf 9)" # BOLD RED
source ~/.bash_prompt
How does it work?
bash provides a special set of variables for your prompts. PS1
is the one used by default. The install script adds a command to ~/.bashrc
, a file that is run every time a new terminal opens. Inside of the new command, we run our script and set your PS1
which runs some git
commands to determine its current state and outputs them as a string.
Donating
Support this project and others by twolfson via gittip.
Support
Linux and Mac OSX are supported platforms.
Windows is supported to the best of my abilities. However, there have been font issues with using PuTTY.
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Test via make test
.
License
Copyright (c) 2013 Todd Wolfson
Licensed under the MIT license.