web-dev-qa-db-fra.com

Comment puis-je définir un PS1 .bashrc différent selon le répertoire dans lequel je me trouve?

J'ai le git-Prompt.sh configuration du script dans mon .bashrc fichier qui me donne les informations utiles de git dans mon invite. C'est idéal pour les petits dépôts, mais quand je cd dans un grand dépôt, cela peut prendre plus de 30 secondes, pour que l'invite réponde car il doit d'abord revoir le dépôt git.

Il est possible de configurer mon .bashrc afin que je puisse soit mettre en liste blanche mes petits dépôts pour l'invite git à afficher, soit mettre ma liste noire en liste noire afin qu'elle ne charge pas l'invite git?
Alternativement, je serais heureux avec un indicateur/variable que je dois définir pour activer l'invite git.

La partie pertinente de mon .bashrc ressemble à ça:

##
# 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
Stephen RC

Regardez le code - le vrai travail se fait dans une fonction __git_ps1, qui est appelé depuis l'intérieur de l'invite.

Remplacez cette fonction par votre propre fonction, par ex.

# this is only a outline of possible code 
function myFancyGitPS1() {
   case $(pwd) in
      */someDir/*)
           specialHandling
           ;;
      *)
           __git_ps1 " (\[\033[01;33m\]%s\[\033[00m\])"
          ;;
   esac
}
3
H.-Dirk Schmitt