Как я могу установить другую .bashrc PS1 в зависимости от каталога, в котором я нахожусь?

У меня есть настройка скрипта git-prompt.sh в моем файле .bashrc, которая дает мне полезную информацию о git в моем приглашении. Это отлично подходит для небольших репо, но когда я cd захожу в большое репо, ответ на приглашение может занять более 30 секунд, так как он должен сначала просмотреть git репо.

Можно настроить мой .bashrc так, чтобы я мог либо внести в белый список свои маленькие репозитории для отображения приглашения git, либо внести в черный список мои большие репозитории, чтобы он не загружал приглашение git?
В качестве альтернативы я был бы счастлив с флагом / переменной, которые я должен установить, чтобы включить приглашение git.

Соответствующая часть моего .bashrc выглядит так:

##
# Git prompt options
##
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWUPSTREAM="auto"

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (\[\033[01;33m\]%s\[\033[00m\])")\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(__git_ps1 " (\[\033[01;33m\]%s\[\033[00m\])")\$ '
fi
unset color_prompt force_color_prompt
4
задан 21 September 2018 в 15:01

1 ответ

Посмотрите на код - реальная работа выполняется в функции __git_ps1, которая вызывается из подсказки.

Замените эту функцию своей собственной функцией, например,

# this is only a outline of possible code 
function myFancyGitPS1() {
   case $(pwd) in
      */someDir/*)
           specialHandling
           ;;
      *)
           __git_ps1 " (\[\033[01;33m\]%s\[\033[00m\])"
          ;;
   esac
}
0
ответ дан 21 September 2018 в 15:01

Другие вопросы по тегам:

Похожие вопросы: