50

Я работаю на машине Windows, и я использую оболочку Bash, которая поставляется с Git. Но есть много утилит, которые отсутствуют в этой версии оболочки Bash.

Как я могу установить больше команд в этой оболочке?

9 ответов9

14

Вы можете использовать две версии Git - дистрибутив msysgit или Cygwin.

Установка дополнительных утилит для Cygwin

Хотя вы, возможно, установили Git только как часть вашей установки Cygwin (если вы использовали Cygwin), у Cygwin есть программа setup.exe, которую вы можете использовать для добавления пакетов. По сути, все, что вам нужно сделать, это запустить setup.exe и выбрать, какие программы вы хотите установить, когда вы попадете в окно Выбор пакетов . Введение здесь обеспечивает хороший обзор с изображениями, которые детализируют процесс.

Установщик Cygwin достаточно умен, чтобы понять, что у вас уже есть существующая установка, и он добавит пакеты в вашу установку (вместо того, чтобы очищать ее от нуля и начинать заново).

MSYS

Другая версия Git, которую вы, вероятно, используете (если не Cygwin), это msysgit. Поскольку msysgit устанавливает минимальную среду Unix, которая на самом деле не совместима с MinGW, вам придется в конечном итоге установить пакет MinGW рядом с msysgit. Страница « Начало работы с MinGW» дает подробный обзор о том, как установить MinGW - поскольку у меня нет опыта работы с MinGW, все, что я могу сделать, - это направить вас к их инструкциям.

Затем вам нужно будет перенести установку msysgit в MinGW. Это может быть достигнуто следующим образом (взято отсюда). После выполнения следующей последовательности MinGW должен найти вашу установку Git.

cd GITDIR # Where GITDIR is wherever inside Program Files you put Git
cp bin/git* /MINGW/bin # Where MINGW is wherever you put MinGW
cp -r libexec/git* /MINGW/libexec
cp -r share/git* /MINGW/share
4

Если вы используете msysgit, простой вариант - просто установить MinGW, а затем добавить путь MINGW к файлу .bashrc, который вы используете для установки Git:

    PATH=$PATH:/MINGW/msys/1.0/bin

... где MINGW, где вы установили MinGW

Таким образом, вы можете использовать инструменты MinGW непосредственно из вашей установки Git bash, а если вам нужен другой инструмент bash, вы можете просто установить его на MinGW.

2

С недавними установками Git для Windows установка дополнительных скриптов и программ оболочки довольно проста.

Я рекомендую установить git с помощью chocolatey choco install git , потому что вы можете обновить git (и все другие инструменты, установленные с chocolatey), выполнив choco upgrade all .

Просто поместите исполняемые файлы в C:\Program Files\Git\usr\bin (%ProgramFiles%\Git\usr\bin).

Пример для git-fresh

Скопируйте файл git-fresh в C:\Program Files\Git\usr\bin .

Пример для adr-tools

  1. Загрузите zip-пакет со страницы релизов
  2. Распакуйте пакет
  3. Скопируйте все из src/ в C:\Program Files\Git\usr\bin
0

Сегодня я нашел довольно простой ответ, который работал на rsync .

  1. Установите git bash для Windows
  2. Загрузите rsync из futureware.at *
  3. Извлеките куда угодно, я выбираю C:\rsync-3.1.2-2-x86_64.pkg
  4. Добавьте папку bin в начало вашего системного пути

* Я не знаю, кто стоит за futureware.at, я бы предпочел ссылку на более первоисточник.

0

Вы можете скачать дополнительные единицы Unix Wget, Hugo, Xpdf, make, Nano отсюда: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Загрузите последний бинарный файл wget для windows от eternallybored (они доступны в виде zip с документацией или просто exe)
  • Если вы скачали zip, распакуйте все (если в Windows встроенная утилита zip выдает ошибку, используйте 7-zip).
  • При необходимости переименуйте файл wget64.exe в wget.exe .
  • Переместите wget.exe в ваш Git\mingw64\bin\ .

Примечание: я заметил некоторые ошибки при использовании Wget в Git Bash для создания файлов WARC. Для более сложного использования Wget рассмотрите Cygwin .

Хьюго

Генератор статических сайтов Hugo можно загрузить в виде двоичного файла без установщика. Удалив его в bin легко добавите его в путь к Git Bash. Возьмите 64-битную версию Windows со страницы релизов. Разархивируйте загрузку, затем скопируйте hugo.exe в каталог Git\mingw64\bin .

Xpdf

Xpdf - удобная утилита для работы с PDF-файлами.

  • Загрузите версию для Windows "Xpdf tools".
  • Извлечь zip.
  • Скопируйте содержимое xpdf-tools-win-4.00\bin64\ в ваш Git\mingw64\bin\ .
  • Проверьте документы, чтобы начать работу с такими инструментами, как pdftotext и pdftopng .

делать

  • Перейти в ezwinports.
  • Скачайте make-4.1-2-without-guile-w32-bin.zip (получите версию без лукавства).
  • Извлечь zip.
  • Скопируйте содержимое в ваш Git\mingw64\ объединяя папки, но НЕ перезаписывайте / заменяйте существующие файлы.

Nano

Начиная с 2018 года, последние версии Git Bash включают Nano, так что в этом нет необходимости!

  • Загрузите двоичный файл Nano со страницы поддержки win32 для Nano. Вам просто нужен файл .exe , который называется nano-git-0d9a7347243.exe (на момент написания статьи).
  • Переименуйте файл в nano.exe и скопируйте в mingw64\bin .
  • Эта версия Nano не будет работать только с Git Bash, но ее можно вызвать с помощью winpty , например, winpty nano test.txt .
0

Можно расширить число функций в git-bash, создав сценарии и вызывая их, определяя их в файле ~/.bash_profile .

пример

Если вы хотите использовать команду watch , то этот скрипт можно добавить в ~/.bash_profile:

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

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

и обернуть его внутри функции:

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

Как только вы сохраните файл и запустите source ~/.bash_profile вы сможете наблюдать за выводом команд.

0

Я попробовал следующее и установил emacs в git-bash .. 1. Установите где-нибудь msys2 (не обязательно должен быть один и тот же компьютер). 2. Под msys2 запустите следующее:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Скопируйте emacs.tar.gz туда, куда вы можете получить доступ из git-bash, затем в git-bash:

    tar zxf emacs.tar.gz -C / emacs

Вот и все, удачи.

После первого поста я попробовал другой компьютер, но не работал. Оказывается, что в git-bash отсутствуют некоторые dll. Затем я проверил на чистой виртуальной машине следующие шаги:

  1. Установите msys2-x86_64-20180531 и Git-2.19.1-64-bit.

  2. Обновите msys2, откройте консоль msys64 и запустите:

    pacman -Syyu
    

    При появлении запроса закройте консоль msys64, а затем снова выполните приведенную выше команду.

  3. Получите файлы emacs как предыдущие шаги (запустите следующее в 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: я однажды попробовал описанные выше шаги в /d /tmp вместо /tmp и не смог установить на него emacs.

  4. Откройте git-bash и извлеките файлы emacs:

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

    Он будет жаловаться на отсутствие общей библиотеки "?"при попытке запустить Emacs сейчас. "?""не раскрывается никому читаемому

  5. Вернитесь к msys64 и получите dll для msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. В git-bash сравните dll с 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
    

    В моем случае в diff_dlls.txt 26 dll.

  7. Скопируйте dll из msys64 в git-bash:

    В msys64:

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

    В гит-баш:

    cp /c/tmp/dlls/* /bin
    
  8. Все сделано, теперь emacs работает в git-bash. Некоторые из 26 библиотек могут не понадобиться, но я бы предпочел сэкономить свое время вместо дискового пространства.

0

Если я использую Git bash для Windows (MinGW64), мне было очень трудно добавить в него rsync. постоянно получал ошибку: dup () in/out/err не удалось

Вместо этого использование Cygwin сработало в конце концов.

Шаги, которые я предпринял, чтобы использовать rysnc в Gitbash для Windows

  1. Установите gitbash для Windows
  2. Установите cygwin64
  3. Добавьте путь cygwin в переменную пути Windows

    Windows-> Система-> Дополнительные настройки-> Переменные среды

    Добавьте путь для C:\cygwin64\bin\

  4. Закройте и снова откройте gitbash Теперь gitbash найдет rsync.exe в cygwin\bin
  5. Я получаю несовместимую ошибку версии для cygwin1.dll

    *** фатальная ошибка - обнаружено несоответствие базы Cygheap

  6. Хотя некоторые говорили, что перезагрузка это исправит, это не так.
  7. Чтобы устранить ошибку версии, я скопировал каталог cygwin\bin из более старой версии cygwin - работала версия 1.7.30
0

установить "Git для Windows SDK" (прокрутите вниз до https://gitforwindows.org/, где есть ссылка для загрузки установщика для него с https://github.com/git-for-windows/build-extra/releases. / последний)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .