Below is a little code I use with ksh. The wt() function can only be expected to work in an X-term. The code sequences are different for other terminal emulators.
DIRSTACK=$PWD
function dirs {
print $DIRSTACK
}
function pushd {
dirname=$1
cd ${dirname:?"missing directory name."}
DIRSTACK="$PWD $DIRSTACK"
}
function popd {
DIRSTACK=${DIRSTACK#* }
top=${DIRSTACK%% *}
cd $top
}
function rfind
{
dir=$PWD
while [ ! -e $1 ]; do
if [ $PWD == "/" ]; then
command cd $dir
return 1
else
command cd ..
fi
done
rfdir=$PWD
command cd $dir
return 0
}
function wt
{
printf "ESC]0;${@/$HOME/'~'}^G"
}
function git_dir
{
typeset str
rfdir=""
rfind '.git'
if [ $? -eq 0 ]; then
str="\{`git branch | grep '*' | cut -d ' ' -f 2`\}"
wt "[${rfdir}${str}]"
else
wt "xterm"
fi
echo "$str"
}
function mkprompt
{
typeset branch
branch=`git_dir`
PS1="${branch}$ "
}
function cd
{
PS1="$ "
command cd $@
mkprompt
}
Andrew Connell
Contact