Jak uruchomić Git Bash z wiersza poleceń DOS?

106

Mam nadzieję, że jest to proste pytanie, ale nie udało mi się jeszcze znaleźć odpowiedzi. Chciałbym uruchomić Git Bash z pliku wsadowego DOS. Oto, czego próbowałem do tej pory:

  1. Uruchomiono Git Bash z przycisku Start Win 7
  2. Użyto CTRL + ALT + DEL, aby zidentyfikować proces jako „sh.exe”
  3. Uruchomiono sh.exe z pliku wsadowego za pomocą polecenia start

    start sh.exe
    

Nie powoduje to jednak uruchomienia pełnego środowiska Git Bash. Git Bash zwykle ma „mingw32” w pasku tytułowym, ale sh.exe ma pełną ścieżkę do ... Git\bin\sh.exe. Wydaje mi się, że istnieją pewne nakładki lub zależności, których prawdopodobnie nie jestem świadomy, które również muszą zostać załadowane (wciągnięte? Zaimportowane?).

Był to jeden z najlepszych wyników, jakie znalazłem podczas wyszukiwania w Internecie, ale nie ma to dla mnie pełnego sensu i nie jestem pewien, czy dotyczy to dokładnie mojej sytuacji:

Uruchamianie git z linii Windows Cmd: Gdzie są pliki kluczy?

Jestem początkującym w świecie skryptów wsadowych DOS.

Eric Hepperle - CodeSlayer2010
źródło
1
Cóż, tak naprawdę nie jest to wiersz poleceń DOS, chyba że: (a) Napotkałeś jakąś anomalię czasową i używasz Windows 9x / ME, gdzie command.comjest jedyna powłoka zawarta w systemie operacyjnym (b) Jesteś na 32- bit NT i albo wywołał go command.comsam, albo stary program zrobił to za Ciebie. Zobacz Jaka jest różnica między CMD a wierszem polecenia w systemie Windows? po więcej informacji.
SamB

Odpowiedzi:

125

Jeśli chcesz uruchomić z pliku wsadowego:

  • dla x86

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

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    
Endoro
źródło
Dzięki @Endoro! Chociaż odpowiedź @Klas Mellbourn była poprawna dla Powershell, twoja jest bardziej poprawna, ponieważ uruchamiam z pliku wsadowego DOS. Dodanie dyrektywy "start" powoduje, że program działa asynchronicznie, co jest dokładnie tym, czego potrzebuję! Kciuki w górę!
Eric Hepperle - CodeSlayer2010
14
Czy istnieje sposób na wpisanie i wykonanie polecenia w oknie wsadowym Git po jego otwarciu z pliku wsadowego?
Nick,
1
@OviC Czy na pewno Twoja zmiana jest poprawna? „Program Files (x86)” istnieje tylko w architekturze x64 dla programów 32-bitowych.
Drunix
@Drunix masz rację, nie ma ścieżki "Program Files (x86) \" w systemach x86. Zrobiłem wycofanie. Dzięki.
Endoro
Co jeśli nie jest zainstalowany na dysku systemowym? A jeśli nie jest zainstalowany w plikach programu?
Michael Kruglos
44

Nie jestem pewien, co dokładnie rozumiesz przez „pełne środowisko Git Bash”, ale jeśli to zrobię, otrzymam niezły komunikat

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

W PowerShell

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

--loginPrzełącznik sprawia, że powłoka wykonać powłokę zgłoszeniową pliki startowe .

Klas Mellbourn
źródło
Dzięki @Klas Mellbourn. Twoja odpowiedź jest dobra dla Powershell, ale bez dodania dyrektywy "start", jak w odpowiedzi Endoro, zatrzymuje wykonywanie następnego programu do czasu wyjścia z powłoki, co nie jest pożądanym zachowaniem, w przeciwnym razie zagłosowałbym za tobą.
Eric Hepperle - CodeSlayer2010
Używam Console2 do okna cmd, co powoduje dziwne zachowanie. Umieściłem to w pliku .bat i teraz wszystko jest w porządku:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault
25

Wolę używać git-bash.exe zamiast sh.exe.

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

Możesz przestać zamykać okno, gdy zadzwonisz /usr/bin/bash --login -iw końcu;

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

Uwaga: nie jestem pewien, czy to dobry sposób :)

kujiy
źródło
4
Dobra odpowiedź, ale okno git-bash zamyka się natychmiast. Czy wiesz, jak wyłączyć automatyczne zamykanie po zakończeniu wykonywania polecenia?
Mark
@Mark Thanks Mark. Do powyższej odpowiedzi dodałem przykład. Niestety nie jestem pewien, jak powinniśmy to zrobić we właściwy sposób, ponieważ nie jestem osobą od okien :)
kujiy
1
[kod] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] działa świetnie!
PauAI
@PauAI 2018 teraz ... Próbowałem start "" "%ProgramFiles%\Git\git-bash.exe"z wiersza poleceń administratora i chociaż wyświetla się Git Bash w nowym oknie, wpisanie prostego polecenia, takiego jak, nie lspowoduje żadnego wyniku. Wydaje się, że ta metoda nie pozwala na wykonywanie poleceń Linuksa. ... EDYCJA: Działało, po prostu zajęło dużo czasu (2 minuty), aby uruchomić ls. Potem znowu przebiegł w mniej niż 1 sekundę. ... dziwne.
Eric Hepperle - CodeSlayer2010
8

Wolę umieścić git w zmiennej środowiskowej i po prostu wywołać

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

Kroki tworzenia zmiennej środowiskowej (Win7)

  • Na pulpicie kliknij prawym przyciskiem myszy ikonę Komputer.
  • Wybierz Właściwości z menu kontekstowego.
  • Kliknij łącze Zaawansowane ustawienia systemu.
  • Kliknij opcję Zmienne środowiskowe.
  • W sekcji Zmienne użytkownika naciśnij przycisk NOWY, wpisz nazwę zmiennej jako GIT_HOME, wartość jako (folder-gdzie-zainstalowałeś-git).

    • dla mnie tak było c:\tools\git, inni mogą miećC:\Program Files\Git
  • znajdź PATHzmienną środowiskową i wybierz ją. Kliknij Edytuj. (Jeśli zmienna środowiskowa PATH nie istnieje, kliknij opcję Nowa).

  • W oknie Edycja dodaj nową wartość %GIT_HOME%i %GIT_HOME%\bin. Kliknij OK. Zamknij wszystkie pozostałe okna, klikając OK.
  • [Upewnij się, że zamknąłeś CMD, którego chcesz użyć dla git]
  • otwórz nowy wiersz polecenia i po prostu wpisz shlub bashlubgit-bash
stary mnich
źródło
2
Dzięki! Udało mi się to uzyskać pracując z GIT_HOME as C:\Program Files\Giti pisząc git-bashz CMD. Co dziwne, chociaż wystarczy wpisać PATH, aby zobaczyć jej zawartość, aby zobaczyć zawartość tej niestandardowej zmiennej git, należy wpisaćecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010
Dziękuję, to był wspaniały dodatek. Aby dodać do tego, gdy masz GIT_HOMEzmienną i użyjesz git-bashpolecenia (lub git-cmd), otworzy się ona w nowym oknie. Jeśli dodasz do zmiennej środowiskowej „PATH”, zmieni się ona w istniejącym oknie. Możesz także exitnapisać „wylogować się” z git bash i nadal zachować znak zachęty DOS.
Keith E. Truesdell
4
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

Git bash zostanie otwarty.

user3616334
źródło
3

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

Wysłałem odpowiedź tutaj.

Otwórz okno poleceń systemu Windows i wykonaj ten skrypt. Jeśli nastąpi zmiana w twoim katalogu roboczym, otworzy to terminal bash w twoim katalogu roboczym i wyświetli bieżący status git. Utrzymuje otwarte okno bash, wywołując exec bash.

Jeśli masz wiele projektów, możesz utworzyć kopie tego skryptu w innym folderze projektu i wywołać go z głównego skryptu wsadowego.

RuntimeException
źródło
3

Wykorzystałem powyższe informacje, aby stworzyć trwalsze rozwiązanie. Poniższe elementy utworzą alias sh, którego możesz użyć do otwarcia Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat
dpate
źródło
Dzięki, dpate! Wkleiłem twoją instrukcję echo do wiersza poleceń i shuruchomiłem i uruchomiono okno git-bash i mogłem doskonale wykonywać polecenia. Czy możesz dodać trochę szczegółów do swojej odpowiedzi, wyjaśniając, jak to działa? Wolę raczej dowiedzieć się, jak działa wędkarstwo, niż poprosić kogoś o rybę, a myślę, że przyniesie to korzyści innym, którzy szukają dobrej odpowiedzi. dzięki
Eric Hepperle - CodeSlayer2010
0

Odpowiedź Endoro się postarzała i nie mogę tego komentować;

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

start "" "%ProgramFiles%\Git\bin\sh.exe" --login
ThaJay
źródło
0

Możesz dodać ścieżkę git do zmiennych środowiskowych

  • Dla x86

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

  • Dla x64

%PROGRAMFILES%\Git\bin\

Otwórz cmd i napisz to polecenie, aby otworzyć git bash

sh --login

Możesz zobaczyć ten obraz GIF, aby uzyskać więcej informacji:

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

Eng_Farghly
źródło