_novcs='\e[37;40m' _svn="\e[36;40m" _git="\e[36;40m" _normal=$(tput sgr0) __vcs_dir() { local vcs base_dir sub_dir ref prompt sub_dir() { local sub_dir sub_dir=$(readlink -f "${PWD}") sub_dir=${sub_dir#$1} } git_dir() { base_dir=$(git-rev-parse --show-cdup 2>/dev/null) || return 1 base_dir=$(readlink -f "$base_dir " | sed 's/ *$//g' | sed 's/\/$//g') sub_dir=$(git-rev-parse --show-prefix) sub_dir=${sub_dir%/} ref=$(git-symbolic-ref -q HEAD || git-name-rev --name-only HEAD 2>/dev/null) ref=${ref#refs/heads/} prompt="${_git}${base_dir/$HOME/~}${_normal}|${ref}|${_git}${sub_dir}${_normal}" } svn_dir() { [ -d ".svn" ] || return 1 prompt="${_svn}${PWD/$HOME/~}${_normal}" } git_dir || svn_dir || prompt="${_novcs}${PWD/$HOME/~}${_normal}" echo -e ${prompt} } PS1='${debian_chroot:+($debian_chroot)}\u@\h:\[$(__vcs_dir)\]\$ '