J'utilise Git, j'ai changé la ligne suivante dans .bashrc code>, Pour afficher la branche CheckedOut actuelle dans l'invite, lorsque PWD code> est une Git prise en pension. Système d'exploitation J'utilise est:. Ubuntu 32bits if [ "$color_prompt" = yes ]; then
if git --version &>/dev/null; then
# PS1 Line to show current Git Branch in the Prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[01;32m\]$(__git_ps1 " (%s)")\[\033[00m\]\$ '
else
# Original PS1 Line
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
fi
else
if git --version &>/dev/null; then
# PS1 Line to show current Git Branch in the Prompt
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w $(__git_ps1 "(%s)")\$ '
else
# Original PS1 Line
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
fi
7 Réponses :
Utiliser quel code> devrait aider. S'il ne renvoie rien -> Git n'est pas installé. P>
quel code> est diabolique; Utilisez les intégrés de bash comme suggéré dans d'autres réponses.
Je suppose que ce n'était pas le meilleur moyen, mais c'était le seul que je pouvais penser ;-)
@tiplée: Pourquoi quel code> le mal est-il écarté du fait qu'il apparaît un processus? À l'aide de la bash intégrée hachage code> a la limitation que cela ne fonctionne que si git code> a été appelé commandement, il pourrait donc y avoir le cas où git est installé mais le < Code> Le hash code> la commande ne renvoie rien. gnu.org/s/bash/manual/bash.html
@Matthew: parce que quel code> est toujours une commande non standard; Il existe des installations où il n'est pas inclus, et toujours quelques anciennes installations où il s'agit d'un script CSH code> dont la sortie n'est pas correcte pour votre shell compatible Bourne, si vous avez un chemin différent, par exemple. Enfin, si le binaire est ombré par une fonction ou un alias, seule votre shell saura savoir. Type Code> est la commande que j'aurais recommandé, bien que j'avais aussi une impression que hash code> a des options pour le faire effectuer une recherche.
Essayez d'exécuter en fonction de la valeur de retour Ceci suppose que tout est configuré correctement et git est dans votre chemin $ et la commande git n'est pas renommée. P> Utilisez-le. comme ceci p> $? code> Vous pouvez assumer GIT est installé ou non. Si vous obtenez 0 Tout est bien, sinon Git n'est pas installé. Vous pouvez également test code> ceci. P>
Vous ne voulez probablement pas la sortie de git -version code> sur votre écran à chaque fois. De plus, je suggérerais de faire le chèque dans le conditionnel; si git -version 2> & 1> / dev / null; Puis code> ...
Merci pour l'indice. Cela dépend s'il n'en a besoin qu'une seule fois. J'ai ajouté votre suggestion à mon extrait initial. Il est logique de sauter la variable si vous ne l'utilisez qu'une fois.
Je recommande d'utiliser hachage code> car il est intégré, donc pas besoin de créer un nouveau processus. Il met également en cache la commande. hash git && commands
Bonne recommandation d'utiliser une bash intégrée, mais en toute divulgation, il convient de noter qu'il est possible que cela soit possible pour être installé mais ne soit pas dans la table de hachage (bien que cela soit probablement une chose rare afin d'être immatérielle). Je serais également intéressé par la raison pour laquelle vous avez reçu un bowvote.
Vous pouvez utiliser ce qui suit pour changer conditionnellement l'invite Bash en fonction de l'existence de Git:
PS1='$no-git-prompt'
if [ $(which git) ]; then
PS1='$git-prompt'
Utiliser type code>:
#!/bin/bash
command -v git >/dev/null 2>&1 ||
{ echo >&2 "Git is not installed. Installing..";
yum install git
}
Mec meilleur réponse de loin. C'est génial car le script ne monte que vers les privilèges sudo (sous Ubuntu, donc j'ai utilisé sudo apt install code> au lieu de yum install code>) si git n'est pas installé et seulement après l'impression de la message, alors l'utilisateur comprend ce qui se passe. Si Git est déjà installé, il ne promet pas le mot de passe sudo.
Cela a fonctionné pour moi: p>
git_version = "$ (git -version)" Si ["$ git_version"! = "Commande introuvable"]; alors echo "git déjà" installé autre echo "git manque" " fi p>
Notez que la fonction
__ git_ps1 code> n'est pas toujours disponible. - Il n'est pas disponible sur mon GIT 2.3.2 sur un Mac par exemple. Il est disponible ici bien que: Github.com/git/ git / blob / ...