você já usa uma função em seu prompt para o seu nome de ramificação git provavelmente, o que é legal, então faça o mesmo em seu caminho:
# shorten a path in $1 to max of $2 characters, prepending a "..."
function __shortpath {
if [[ ${#1} -gt $2 ]]; then
len=$2+3
echo "..."${1: -$len}
else
echo $1
fi
}
PS1='\[3[01;32m\][$(__shortpath "\w" 50)\[3[00m\]\[3[01;34m\]$(__git_ps1 " (%s)")3[01;32m\]]\[3[00m\]\$ '
Limitará o caminho para os últimos 50 caracteres. Isto é um exemplo. Você também pode pensar em cortar apenas em uma barra, mas isso torna mais difícil.
# drops first portion of a path $1 if length is greater than $2
function __droppath {
if [[ ${#1} -gt $2 ]]; then
p=$1
while [ ${#p} -gt $2 ]; do
p="/"$(echo "$p"|cut -d"/" -f3-)
done
echo "..."$p
else
echo $1
fi
}
PS1='\[3[01;32m\][$(__droppath "\w" 50)\[3[00m\]\[3[01;34m\]$(__git_ps1 " (%s)")3[01;32m\]]\[3[00m\]\$ '
Talvez também seja uma boa idéia proteger o loop while verificando se o tamanho novo é menor que o tamanho antigo (caso contrário, saia) ou se o tamanho novo é 0, caso em que você pode retornar o último valor de $ p - ou continuar __shortpath.