I was looking for a way to easily print the current gemset I am in when working in the terminal. I found a stack overflow post, but it did not really satisfy me. With some googling I also found this post.
I modified the script a tiny bit (color preferences + added __git_ps1 to detect branch) and would like to share you what I’ve got.
This is the complete script I use now, copy & paste if you like.
The result looks like this:
# This shows the git branch of the current directory function __git_ps1 () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/' } function __git_dirty { git diff --quiet HEAD &>/dev/null [ $? == 1 ] && echo " (changes!)" } function __git_branch { __git_ps1 " %s" } function __my_rvm_ruby_version { local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}') [ "$gemset" != "" ] && gemset="@$gemset" local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}') [ "$version" == "1.8.7" ] && version="" local full="$version$gemset" [ "$full" != "" ] && echo "$full " } bash_prompt() { local NONE="[\033[0m]" # unsets color to term's fg color # regular colors local K="[\033[0;30m]" # black local R="[\033[0;31m]" # red local G="[\033[0;32m]" # green local Y="[\033[0;33m]" # yellow local B="[\033[0;34m]" # blue local M="[\033[0;35m]" # magenta local C="[\033[0;36m]" # cyan local W="[\033[0;37m]" # white # emphasized (bolded) colors local EMK="[\033[1;30m]" local EMR="[\033[1;31m]" local EMG="[\033[1;32m]" local EMY="[\033[1;33m]" local EMB="[\033[1;34m]" local EMM="[\033[1;35m]" local EMC="[\033[1;36m]" local EMW="[\033[1;37m]" # background colors local BGK="[\033[40m]" local BGR="[\033[41m]" local BGG="[\033[42m]" local BGY="[\033[43m]" local BGB="[\033[44m]" local BGM="[\033[45m]" local BGC="[\033[46m]" local BGW="[\033[47m]" local UC=$W # user's color [ $UID -eq "0" ] && UC=$R # root's color PS1="$M$(__my_rvm_ruby_version)$Wh$W:$EMGw$EMC$(__git_branch)$EMW$(__git_dirty)${NONE} $ " } bash_prompt unset bash_prompt