web-dev-qa-db-fra.com

-bash: __git_ps1: commande introuvable

J'ai essayé d'installer Ruby 2.0. Ma ligne de commande a urpé et ressemble maintenant à ceci:

-bash: __git_ps1: command not found
[11:58:28][whatever@whatever ~]$ 

Je n'ai aucune idée de la façon de se débarrasser de l'erreur de commande __git_ps1 introuvable. J'ai recherché mon .bash_profile et mon .bashrc pour voir s'il essaie de définir une variable ou quelque chose et je ne vois rien. Le seul endroit où je peux trouver git_ps1 mentionné est dans ~/.dotfiles/.bash_Prompt. Je remplace complètement le contenu de ce fichier, me déconnecte et me reconnecte et cela ne résout rien.

J'ai vu this , mais je suis assez nouveau en ligne de commande, donc je me suis juste confondu.

Des idées?

50
Joel Dehlin

BASH a toute une série de façons de configurer automatiquement votre invite pour vous donner de belles informations. Vous définissez l'invite en définissant la variable d'environnement PS1. Par exemple, si je mets PS1="$ " Mon invite ressemblera à ceci:

$ 

Pas trop informatif. Tout ce que je peux dire, c'est que la ligne de commande m'invite.

Cependant, si je mets PS1=\u@\h: \w$, Mon invite ressemblera maintenant à ceci:

david@vegibank:/usr/bin$ 

Cela m'indique comment je suis connecté (le \u), La machine sur laquelle je me trouve (\h) Et le répertoire dans lequel je me trouve (le \w) . Si j'utilise git, ce serait bien si la branche git dans laquelle je suis fait également partie de mon invite.

C'est exactement ce qui se passe avec votre .profile, Votre fichier .bashrc, Votre .bash_login Ou votre script .bash_profile. Ou, ce que certains administrateurs système ont fait dans /etc/profile.

Il y a quelques choses que vous pouvez faire. Non plus:

  • Téléchargez le __git_ps1 Manquant et assurez-vous qu'il se trouve dans votre variable d'environnement $PATH (Qui est définie par une combinaison des divers fichiers d'initialisation mentionnés ci-dessus)
  • Modifiez votre variable d'environnement PS1 Dans le fichier d'initialisation en cours d'exécution (je crois que c'est probablement .bash_profile.

Ajoutez simplement ceci comme dernière ligne:

PS1="\u@\h:\w\n$ "

Le \n Ajouté imprime le signe dollar sur la ligne ci-dessous comme ceci:

david@vegibank:/usr/bin
$ 

J'aime le faire parce que l'invite peut être assez longue et la modification de la ligne de commande devient délicate lorsque l'invite dépasse 30 à 50 caractères. Sinon, c'est à peu près l'invite standard que la plupart des utilisateurs utilisent. Vous pouvez en savoir plus sur la configuration des invites BASH dans les pages de manuel . (Recherchez l'invite de mots sur cette page).

Si vous trouvez cela un peu déroutant, soyez content de ne pas utiliser Kornshell. J'utilise Kornshell et pour obtenir la même invite PS1=\u@\h:\w\n$, J'ai défini mon invite comme suit:

export PS1='$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")'
22
David W.

Exécutez ce qui suit:

$ curl -L https://raw.github.com/git/git/master/contrib/completion/git-Prompt.sh > ~/.bash_git

Et ajoutez ceci en haut de votre ~/.bashrc:

source ~/.bash_git

Reconnectez-vous à votre Shell et vous devriez être prêt.

113
Blake

Recherchez dans votre système un git-Prompt.sh, vous devez source que pour le __git_ps1 fonction disponible. À Arch, il est actuellement situé au /usr/share/git/completion/git-Prompt.sh. Ajouter

source /path/to/git-Prompt.sh

à un script Shell approprié. Si vous ne savez pas où, ajoutez-le à votre ~/.bashrc.

Si vous avez locate installé, vous pouvez l'utiliser pour trouver le git-Prompt.sh fichier, mais vous devrez peut-être d'abord exécuter updatedb en tant que root.

40
Emil Lundberg

À partir de 2019, la fonction d'aide à l'invite devrait être installée lors de l'installation du package git et peut être trouvée dans /usr/lib/git-core/git-sh-Prompt.

S'il n'est pas chargé, installez bash-completion package et jetez un œil à votre ~/.bashrc.

Dans mon cas, j'ai dû commenter ceci:

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

et ouvrir un nouveau Shell, et tout allait bien.

La cause première était "bash-complétement" mal configuré en premier lieu lors d'une nouvelle installation.

3
sjas

Citant de /usr/lib/git-core/git-sh-Prompt:

# This script allows you to see repository status in your Prompt.
#
# To enable:
#
#    1) Copy this file to somewhere (e.g. ~/.git-Prompt.sh).
#    2) Add the following line to your .bashrc/.zshrc:
#        source ~/.git-Prompt.sh
#    3a) Change your PS1 to call __git_ps1 as
#        command-substitution:
#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#        ZSH:  setopt Prompt_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
#        the optional argument will be used as format string.
#    3b) Alternatively, for a slightly faster Prompt, __git_ps1 can
#        be used for Prompt_COMMAND in Bash or for precmd() in Zsh
#        with two parameters, <pre> and <post>, which are strings
#        you would put in $PS1 before and after the status string
#        generated by the git-Prompt machinery.  e.g.
#        Bash: Prompt_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
#          will show username, at-sign, Host, colon, cwd, then
#          various status string, followed by dollar and SP, as
#          your Prompt.
#        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
#          will show username, pipe, then various status string,
#          followed by colon, cwd, dollar and SP, as your Prompt.
#        Optionally, you can supply a third argument with a printf
#        format string to finetune the output of the branch status

Suivre ces étapes devrait résoudre votre problème !!

2
ShubhamDhama