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
}