Я работаю на машине Windows, и я использую оболочку Bash, которая поставляется с Git. Но есть много утилит, которые отсутствуют в этой версии оболочки Bash.
Как я могу установить больше команд в этой оболочке?
Вы можете использовать две версии Git - дистрибутив msysgit или Cygwin.
Хотя вы, возможно, установили Git только как часть вашей установки Cygwin (если вы использовали Cygwin), у Cygwin есть программа setup.exe, которую вы можете использовать для добавления пакетов. По сути, все, что вам нужно сделать, это запустить setup.exe
и выбрать, какие программы вы хотите установить, когда вы попадете в окно Выбор пакетов . Введение здесь обеспечивает хороший обзор с изображениями, которые детализируют процесс.
Установщик Cygwin достаточно умен, чтобы понять, что у вас уже есть существующая установка, и он добавит пакеты в вашу установку (вместо того, чтобы очищать ее от нуля и начинать заново).
Другая версия 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
Если вы используете msysgit, простой вариант - просто установить MinGW, а затем добавить путь MINGW к файлу .bashrc, который вы используете для установки Git:
PATH=$PATH:/MINGW/msys/1.0/bin
... где MINGW, где вы установили MinGW
Таким образом, вы можете использовать инструменты MinGW непосредственно из вашей установки Git bash, а если вам нужен другой инструмент bash, вы можете просто установить его на MinGW.
С недавними установками Git для Windows установка дополнительных скриптов и программ оболочки довольно проста.
Я рекомендую установить git с помощью chocolatey choco install git
, потому что вы можете обновить git (и все другие инструменты, установленные с chocolatey), выполнив choco upgrade all
.
Просто поместите исполняемые файлы в C:\Program Files\Git\usr\bin
(%ProgramFiles%\Git\usr\bin
).
Скопируйте файл git-fresh в C:\Program Files\Git\usr\bin
.
src/
в C:\Program Files\Git\usr\bin
Сегодня я нашел довольно простой ответ, который работал на rsync
.
rsync
из futureware.at *C:\rsync-3.1.2-2-x86_64.pkg
* Я не знаю, кто стоит за futureware.at, я бы предпочел ссылку на более первоисточник.
Вы можете скачать дополнительные единицы Unix Wget, Hugo, Xpdf, make, Nano
отсюда: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
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 - удобная утилита для работы с PDF-файлами.
xpdf-tools-win-4.00\bin64\
в ваш Git\mingw64\bin\
.pdftotext
и pdftopng
.make-4.1-2-without-guile-w32-bin.zip
(получите версию без лукавства).Git\mingw64\
объединяя папки, но НЕ перезаписывайте / заменяйте существующие файлы. Начиная с 2018 года, последние версии Git Bash включают Nano, так что в этом нет необходимости!
.exe
, который называется nano-git-0d9a7347243.exe
(на момент написания статьи).nano.exe
и скопируйте в mingw64\bin
.winpty
, например, winpty nano test.txt
.Можно расширить число функций в 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
вы сможете наблюдать за выводом команд.
Я попробовал следующее и установил 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
Скопируйте
emacs.tar.gz
туда, куда вы можете получить доступ из git-bash, затем в git-bash:tar zxf emacs.tar.gz -C / emacs
Вот и все, удачи.
После первого поста я попробовал другой компьютер, но не работал. Оказывается, что в git-bash отсутствуют некоторые dll. Затем я проверил на чистой виртуальной машине следующие шаги:
Установите msys2-x86_64-20180531 и Git-2.19.1-64-bit.
Обновите msys2, откройте консоль msys64 и запустите:
pacman -Syyu
При появлении запроса закройте консоль msys64, а затем снова выполните приведенную выше команду.
Получите файлы 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.
Откройте git-bash и извлеките файлы emacs:
cd /c/tmp
tar zxf emacs.tar.gz -C /
Он будет жаловаться на отсутствие общей библиотеки "?"при попытке запустить Emacs сейчас. "?""не раскрывается никому читаемому
Вернитесь к msys64 и получите dll для msys2:
ls --color=never /bin/*.dll > /c/tmp/1.txt
В 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.
Скопируйте 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
Все сделано, теперь emacs работает в git-bash. Некоторые из 26 библиотек могут не понадобиться, но я бы предпочел сэкономить свое время вместо дискового пространства.
Если я использую Git bash для Windows (MinGW64), мне было очень трудно добавить в него rsync. постоянно получал ошибку: dup () in/out/err не удалось
Вместо этого использование Cygwin сработало в конце концов.
Шаги, которые я предпринял, чтобы использовать rysnc в Gitbash для Windows
Windows-> Система-> Дополнительные настройки-> Переменные среды
Добавьте путь для C:\cygwin64\bin\
*** фатальная ошибка - обнаружено несоответствие базы Cygheap
установить "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