101 votes

Comment ajouter plus de commandes à Git Bash ?

Je travaille sur une machine Windows et j'utilise l'interpréteur de commandes bash qui est livré avec Git. Mais il y a beaucoup d'utilitaires qui manquent dans cette version de l'interpréteur de commandes bash.

Comment puis-je installer plus de commandes sur cet interpréteur de commandes ?

3voto

rofrol Points 1709

installez "Git for Windows SDK" (faites défiler jusqu'au bas de https://gitforwindows.org/ qui fournit un lien pour télécharger l'installateur depuis https://github.com/git-for-windows/build-extra/releases/latest)

https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows/52105321#52105321

1voto

chenxin Points 111

J'ai essayé ce qui suit et j'ai installé emacs sur git-bash.. 1. Installer msys2 quelque part (n'a pas besoin d'être sur le même ordinateur). 2. Sous msys2, exécutez ce qui suit:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copiez emacs.tar.gz là où vous pouvez y accéder depuis git-bash, puis sous git-bash:

    tar zxf emacs.tar.gz -C / emacs

Voilà, bonne chance.

Après le premier post, j'ai essayé sur un autre ordinateur mais cela ne marche pas. Il s'avère qu'il manque quelques dlls dans git-bash. J'ai alors testé dans une machine virtuelle propre avec les étapes suivantes:

  1. Installer msys2-x86_64-20180531 et Git-2.19.1-64-bit.

  2. Mettre à jour msys2, ouvrir la console msys64 et exécuter:

    pacman -Syyu

    Fermez la console msys64 lorsque vous y êtes invité, puis exécutez à nouveau la commande ci-dessus.

  3. Obtenir les fichiers emacs comme dans les étapes précédentes (exécutez ce qui suit dans msys64):

    cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
    mv emacs.tar.gz /c/tmp

    ps: j'ai déjà essayé les étapes ci-dessus dans /d/tmp au lieu de /tmp et je n'ai pas pu installer emacs dessus.

  4. Ouvrez git-bash et extrayez les fichiers emacs:

    cd /c/tmp
    tar zxf emacs.tar.gz -C /

    Il se plaindra d'une bibliothèque partagée manquante "?" en essayant de lancer emacs maintenant. Le "?" ne sera pas révélé sous une forme lisible.

  5. Retournez dans msys64 et obtenez les dlls de msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
  6. Dans git-bash, comparez les dlls avec msys:

    cd /c/tmp
    git init
    git add 1.txt && git commit
    ls --color=never /bin/*.dll | sed 's#\*$##g' > /c/tmp/1.txt
    git diff 1.txt | grep '^-' | sed '1d' | sed 's#^-/bin/##g' > diff_dlls.txt

    Dans mon cas, il y a 26 dlls dans diff_dlls.txt.

  7. Copiez les dlls de msys64 à git-bash:

    Dans msys64:

    mkdir /c/tmp/dlls
    cat /c/tmp/diff_dlls.txt | xargs -I {} cp /bin/{} /c/tmp/dlls

    Dans git-bash:

    cp /c/tmp/dlls/* /bin
  8. C'est fait, maintenant emacs fonctionne dans git-bash. Certaines des 26 dlls peuvent ne pas être nécessaires, mais je préfère économiser mon temps plutôt que de l'espace disque.

1voto

geneorama Points 1338

J'ai trouvé une réponse assez simple aujourd'hui qui a fonctionné pour rsync.

  1. Installer git bash pour Windows
  2. Télécharger rsync depuis futureware.at*
  3. Extraire n'importe où, j'ai choisi C:\rsync-3.1.2-2-x86_64.pkg
  4. Ajouter le dossier bin en haut de votre chemin système

* Je ne sais pas qui est derrière futureware.at, je préférerais lier à une source plus primaire.

0voto

Mike Points 101

Si vous utilisez Git bash pour Windows (MinGW64), j'ai eu beaucoup de mal à ajouter rsync à celui-ci. Je continuais à obtenir une erreur : dup() in/out/err a échoué

À la place, en utilisant Cygwin a finalement fonctionné.

Les étapes que j'ai suivies pour utiliser rysnc dans Gitbash pour Windows

  1. Installer gitbash pour Windows

  2. Installer cygwin64

  3. Ajouter le chemin de cygwin au variable d'environnement de Windows

    Windows-> Système-> Paramètres avancés-> Variables d'environnement

    Ajouter un chemin pour C:\cygwin64\bin\

  4. Fermez et ouvrez à nouveau gitbash Maintenant gitbash trouvera le rsync.exe dans le cygwin\bin

  5. Je recevais une erreur de version incompatible pour cygwin1.dll

    *** erreur fatale - détection d'une incohérence de la base cygheap

  6. Bien que certains disaient qu'un redémarrage corrigerait cela, ce n'était pas le cas.

  7. Pour résoudre l'erreur de version, j'ai copié le répertoire cygwin\bin à partir d'une version plus ancienne de cygwin - la version 1.7.30 a fonctionné

0voto

Vadim Slutsky Points 51

On pourrait étendre le nombre de fonctionnalités dans git-bash en créant des scripts et les appeler en les définissant dans le fichier ~/.bash_profile.

Exemple

Si quelqu'un souhaite utiliser la commande watch, alors ce script pourrait être ajouté au fichier ~/.bash_profile:

https://gist.github.com/espaciomore/28e24ce4f91177c0964f4f67bb5c5fda

ARGS="${@}"
clear;
while(true); do
  OUTPUT=`$ARGS`
  clear
  echo -e "${OUTPUT[@]}"
done

et l'envelopper à l'intérieur d'une fonction:

watch() {
  ARGS="${@}"
  clear;
  while(true); do
    OUTPUT=`$ARGS`
    clear
    echo -e "${OUTPUT[@]}"
  done
}

Dès que quelqu'un enregistre le fichier et exécute source ~/.bash_profile alors il devrait pouvoir regarder la sortie des commandes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X