11
votes

Comment vérifier si GIT est installé à partir de .CASHRC

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


1 commentaires

Notez que la fonction __ git_ps1 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 / ...


7 Réponses :


4
votes

Utiliser quel devrait aider. S'il ne renvoie rien -> Git n'est pas installé.


4 commentaires

quel 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 le mal est-il écarté du fait qu'il apparaît un processus? À l'aide de la bash intégrée hachage a la limitation que cela ne fonctionne que si git a été appelé commandement, il pourrait donc y avoir le cas où git est installé mais le < Code> Le hash la commande ne renvoie rien. gnu.org/s/bash/manual/bash.html


@Matthew: parce que quel 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 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 est la commande que j'aurais recommandé, bien que j'avais aussi une impression que hash a des options pour le faire effectuer une recherche.



21
votes

Essayez d'exécuter xxx

en fonction de la valeur de retour $? 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 ceci.

Ceci suppose que tout est configuré correctement et git est dans votre chemin $ et la commande git n'est pas renommée.

Utilisez-le. comme ceci xxx


2 commentaires

Vous ne voulez probablement pas la sortie de git -version 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 ...


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.



2
votes

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


1 commentaires

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.



0
votes

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'


0 commentaires

2
votes

Utiliser type : xxx


0 commentaires

6
votes
#!/bin/bash
command -v git >/dev/null 2>&1 ||
{ echo >&2 "Git is not installed. Installing..";
  yum install git
}

1 commentaires

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 au lieu de yum install ) 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.



0
votes

Cela a fonctionné pour moi:

git_version = "$ (git -version)" Si ["$ git_version"! = "Commande introuvable"]; alors echo "git déjà" installé autre echo "git manque" " fi


0 commentaires