O escape %~ abrevia o diretório atual usando diretórios hash quando possível. Para parar de usar abreviações de diretório, você pode usar %/ , mas isso também não abrevia o diretório home.
Para abreviar apenas o diretório base, defina a opção prompt_subst pode exigir a adição de barras invertidas adicionais em locais no seu prompt). Em vez de %~ ou %/ , use uma expansão manual de $PWD .
setopt prompt_subst
PS1='%B${${PWD/#%$HOME%/\~\/}/#$HOME/\~}\$%b '
Se você deseja realizar substituições mais complexas, defina uma variável na chpwd ligar e usá-lo em seu prompt. Mesmo para o caso simples mostrado acima, essa abordagem é mais detalhada, mas possivelmente mais legível.
setopt prompt_subst
chpwd () {
case $PWD in
$HOME/*) prompt_PWD=\~/${PWD#$HOME};;
$HOME) prompt_PWD=\~;;
*) prompt_PWD=$PWD;;
esac
}
PS1='%B$prompt_PWD\$%b '
Você pode preferir uma abordagem híbrida que expanda apenas determinados diretórios hash. É fácil conectar-se à abordagem chpwd (ou mesmo à abordagem direta, mas é menos legível). Por exemplo, o comando chpwd a seguir abrevia apenas os diretórios que começam com /home (presumivelmente, os diretórios iniciais de outros usuários) e que não estão em seu diretório inicial.
chpwd () {
case $PWD in
$HOME/*) prompt_PWD=\~/${PWD#$HOME};;
$HOME) prompt_PWD=\~;;
/home/*) prompt_PWD=${(%)${:-%~}};;
*) prompt_PWD=$PWD;;
esac
}