При работе при Debian Lenny сделайте это:
apt-get install bash-completion
Затем пойдите для ~/.bash_profile, чтобы позволить ему локально или/etc/profile добавить его в масштабе всей системы. Вставьте следующее в:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
незамедлительный побег % ~
сокращает текущий каталог с помощью хешированных каталогов, когда это возможно. Чтобы прекратить использовать сокращения каталога, можно использовать % /
вместо этого, но это не сокращает корневой каталог также.
Для сокращения корневого каталога только установите опция prompt_subst
(это может потребовать добавляющих дополнительных обратных косых черт в местах в подсказке). Вместо % ~
или % /
, используйте ручное расширение от $PWD
.
setopt prompt_subst
PS1='%B${${PWD/#%$HOME%/\~\/}/#$HOME/\~}\$%b '
, Если вы хотите выполнить более сложные замены, можно установить переменную в рычаг chpwd
и использовать его в подсказке. Даже в простом корпусе, показанном выше, этот подход является более подробным, но возможно более читаемым.
setopt prompt_subst
chpwd () {
case $PWD in
$HOME/*) prompt_PWD=\~/${PWD#$HOME};;
$HOME) prompt_PWD=\~;;
*) prompt_PWD=$PWD;;
esac
}
PS1='%B$prompt_PWD\$%b '
можно предпочесть гибридный подход, который разворачивает только определенные хешированные каталоги. Это легко включить подход chpwd
(или даже в прямой подход, но это менее читаемо). Например, следующий команда chpwd
сокращает только каталоги, которые запускаются с / домой
(по-видимому, корневые каталоги других пользователей) и которые не находятся под вашим корневым каталогом.
chpwd () {
case $PWD in
$HOME/*) prompt_PWD=\~/${PWD#$HOME};;
$HOME) prompt_PWD=\~;;
/home/*) prompt_PWD=${(%)${:-%~}};;
*) prompt_PWD=$PWD;;
esac
}