Як запустити Git Bash з командного рядка DOS?


106

У мене є те, на що я сподіваюсь, це просте запитання, але я ще не змогла знайти відповідь. Я хотів би запустити Git Bash з пакетного файлу DOS. Ось що я спробував поки що:

  1. Запустив Git Bash від кнопки «Пуск Win 7»
  2. Використовується CTRL + ALT + DEL для ідентифікації процесу як "sh.exe"
  3. Запущено sh.exe з пакетного файлу за допомогою команди start

    start sh.exe
    

Однак це не запускає повне середовище Git Bash. Git Bash зазвичай має «Mingw32» в рядку заголовка, але sh.exe має повний шлях до ... Git\bin\sh.exe. Мені здається, що є якісь накладки або залежності, про які я не знаю, можливо, що також потрібно завантажувати (втягувати? Імпортувати?).

Це був один із найкращих результатів, який я знайшов за допомогою пошуку в Інтернеті, але це не має для мене повного сенсу, і я не впевнений, чи стосується він саме моєї ситуації:

Запуск git з рядка Windows Cmd: Де знаходяться ключові файли?

Я новачок у світі пакетних сценаріїв DOS.


1
Ну, це насправді командний рядок DOS, якщо: (a) Ви зіткнулися з якоюсь часовою аномалією та використовуєте Windows 9x / ME, де command.comєдина оболонка, що входить до ОС (b) Ви перебуваєте на 32- бітова система NT і або посилалася на command.comсебе, або стара програма зробила це за вас. Див. Яка різниця між CMD та Command-рядком у вікнах? для отримання додаткової інформації.
SamB

Відповіді:


125

Якщо ви хочете запустити з пакетного файлу:

  • для x86

    start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login
    
  • для x64

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    

Дякую @Endoro! Хоча відповідь @Klas Mellbourn була правильною для Powershell, ваша правильніше, оскільки я працюю з пакетного файлу DOS. Додавання директиви "start" змушує програму виконувати асинхронно, саме це мені і потрібно! Пальці вгору!
Ерік Хепперл - CodeSlayer2010

14
Чи є спосіб ввести та виконати команду у вікно пакетного пакету Git після того, як воно відкриється зсередини пакетного файлу?
Нік

1
@OviC Ви впевнені, що ваша редакція правильна? "Файли програм (x86)" існують лише в архітектурі x64 для 32-бітових програм.
Друнікс

@Drunix ви праві, в системах x86 немає шляху "Файли програм (x86) \". Я зробив відкат. Дякую.
Ендоро

Що робити, якщо він не встановлений на системному диску? Що робити, якщо він не встановлений у програмних файлах?
Майкл Круглос

44

Я не впевнений, що саме ви маєте на увазі під "повним середовищем Git Bash", але я отримую приємне підказку, якщо це зробити

"C:\Program Files\Git\bin\sh.exe" --login

В PowerShell

& 'C:\Program Files\Git\bin\sh.exe' --login

--loginПеремикач робить оболонка виконувати шелл завантажувальні файли .


Дякую @Klas Mellbourn Ваша відповідь хороша для Powershell, але без додавання директиви "start", як у відповіді Ендоро, вона зупиняє виконання наступної програми, поки оболонка не вийде, що не є бажаною поведінкою, інакше я би проголосував за вас.
Eric Hepperle - CodeSlayer2010

Я використовую Console2 для вікна cmd, і це викликає дивну поведінку. Я помістив це у .bat файл і тепер все добре:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Гра

25

Я вважаю за краще використовувати git-bash.exe замість sh.exe.

start "" "%ProgramFiles%\Git\git-bash.exe" -c "tail -f /c/Windows/win.ini"

Ви можете припинити закривати вікно, коли /usr/bin/bash --login -iв кінці дзвінка ;

start "" "%ProgramFiles%\Git\git-bash.exe" -c "echo 1 && echo 2 && /usr/bin/bash --login -i"

Примітка: я не впевнений, що це хороший спосіб :)


4
Гарна відповідь, але вікно git-bash негайно закривається. Чи знаєте ви, як відключити автоматичне закриття після виконання команди?
Марк

@ Марк Подяка Марк. Я додав приклад до своєї відповіді вище. На жаль, я не впевнений, як нам це зробити правильно, тому що я не людина з вікон :)
kujiy

1
[code] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] працює чудово!
PauAI

@PauAI 2018 зараз ... Я спробував start "" "%ProgramFiles%\Git\git-bash.exe"у командному рядку адміністратора, і хоч він відкриває Git Bash у новому вікні, ввівши просту команду, як lsрезультати, без результатів. Цей метод, схоже, не дозволяє виконувати команди Linux. ... EDIT: Працював, просто знадобився багато часу (2 хвилини), щоб запустити ls. Потім ls знову пробіг менше ніж за 1 сек. ... дивно.
Ерік Хепперл - CodeSlayer2010

8

Я вважаю за краще вводити git в змінну середовища і просто телефонувати

c:\Users\[myname]>sh
or 
c:\Users\[myname]>bash

Кроки для створення змінної середовища (Win7)

  • На робочому столі правою кнопкою миші натисніть на значок Комп'ютер.
  • У контекстному меню виберіть "Властивості".
  • Клацніть посилання Розширені налаштування системи.
  • Клацніть Змінні середовища.
  • У розділі Користувацькі змінні натисніть кнопку NEW, введіть ім'я змінної як GIT_HOME, значення як (папка-де-ви-встановлено-git).

    • для мене це було c:\tools\git, інші, можливо, єC:\Program Files\Git
  • знайти PATHзмінну середовища та виберіть її. Натисніть Редагувати. (Якщо змінної середовища PATH не існує, натисніть кнопку Створити).

  • У вікні Правка додайте нове значення %GIT_HOME%та %GIT_HOME%\bin. Натисніть кнопку ОК. Закрийте всі вікна, що залишилися, натиснувши ОК.
  • [Обов’язково закрийте CMD, який ви хочете використовувати для git]
  • відкрийте новий командний рядок і просто введіть shабо bashабоgit-bash

2
Дякую! Мені вдалося налагодити цю роботу з GIT_HOME як C:\Program Files\Gitі набравши git-bashз CMD. Крім того, як не дивно, хоча вам потрібно лише набрати PATH, щоб побачити його вміст, щоб побачити вміст цієї спеціальної змінної git, ви повинні ввестиecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010

Дякую, це було чудовим доповненням. Щоб додати до цього, коли у вас є GIT_HOMEзмінна та ви використовуєте git-bashкоманду (або git-cmd), вона відкриє її в новому вікні. Якщо ви додасте до змінної середовища "PATH", вона переключиться у тому існуючому вікні. Ви також можете ввести exit"вихід" з git bash і все одно зберегти підказку DOS.
Кіт Е. Труесдель


3

https://stackoverflow.com/a/33368029/15789

Тут я опублікував відповідь.

Відкрийте вікно команд Windows та виконайте цей сценарій. Якщо у вашому робочому каталозі є зміна, він відкриє bash-термінал у вашій робочій директорії та відображатиме поточний статус git. Він тримає вікно bash відкритим, викликаючи exec bash.

Якщо у вас є кілька проектів, ви можете створити копії цього сценарію з іншої папки проекту і викликати його з основного пакетного сценарію.


3

Я використовував інформацію, подану вище, щоб допомогти створити більш постійне рішення. Нижче буде створено псевдонім sh, який можна використовувати для відкриття Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat

Дякую dpate! Я вставив вашу команду echo в командний рядок і побіг, shі запустилося вікно git-bash, і я міг виконувати команди ідеально. Чи можете додати трохи деталей до вашої відповіді, пояснюючи, як це працює? Я краще дізнаюся, як працює риболовля, ніж хтось дасть мені рибу, і я думаю, що це піде на користь іншим, хто шукає гарної відповіді. дякую
Ерік Хепперл - CodeSlayer2010

0

Відповідь Ендоро постаріла, і я не можу коментувати;

# if you want to launch from a batch file or the command line:

start "" "%ProgramFiles%\Git\bin\sh.exe" --login

0

Ви можете додати git шлях до змінних оточення

  • Для x86

%SYSTEMDRIVE%\Program Files (x86)\Git\bin\

  • Для x64

%PROGRAMFILES%\Git\bin\

Відкрийте cmd і напишіть цю команду, щоб відкрити git bash

sh --login

Ви можете побачити це зображення у форматі GIF для отримання додаткової інформації:

https://media1.giphy.com/media/WSxbZkPFY490wk3abN/giphy.gif

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.