Làm thế nào để khởi chạy Git Bash từ Dòng lệnh DOS?


106

Tôi đã có những gì tôi hy vọng là một câu hỏi đơn giản, nhưng tôi vẫn chưa thể tìm ra câu trả lời. Tôi muốn khởi chạy Git Bash từ một tệp hàng loạt DOS. Đây là những gì tôi đã thử cho đến nay:

  1. Khởi chạy Git Bash từ nút Bắt đầu của Win 7
  2. Đã sử dụng CTRL + ALT + DEL để xác định quá trình là "sh.exe"
  3. Khởi chạy sh.exe từ tệp hàng loạt bằng lệnh bắt đầu

    start sh.exe
    

Tuy nhiên, điều này không khởi chạy môi trường Git Bash đầy đủ. Git Bash thường có "MINGW32" trên thanh tiêu đề, nhưng sh.exe có một đường dẫn đầy đủ đến ...Git\bin\sh.exe . Đối với tôi, tôi cảm thấy như có một số lớp phủ hoặc phụ thuộc mà tôi không biết có thể xảy ra, cũng cần được tải (kéo vào? Nhập?).

Đây là một trong những kết quả hàng đầu mà tôi tìm thấy khi tìm kiếm trên web, nhưng nó không hoàn toàn hợp lý với tôi và tôi không chắc liệu nó có áp dụng chính xác cho trường hợp của tôi hay không:

Đang chạy git từ Windows Cmd dòng: Các tệp quan trọng ở đâu?

Tôi là người mới bắt đầu trong thế giới tập lệnh hàng loạt DOS.


1
Chà, nó không thực sự là dòng lệnh DOS trừ khi: (a) Bạn đã gặp phải một số trường hợp bất thường về thời gian và đang sử dụng Windows 9x / ME, đây command.comlà trình bao duy nhất đi kèm với Hệ điều hành (b) Bạn đang sử dụng 32- hệ thống bit NT và có thể command.comtự gọi ra hoặc một chương trình cũ đã làm điều đó cho bạn. Xem Sự khác biệt giữa CMD và Command prompt trong windows là gì? để biết thêm thông tin.
SamB

Câu trả lời:


125

Nếu bạn muốn khởi chạy từ một tệp hàng loạt:

  • cho x86

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

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

Cảm ơn @Endoro! Mặc dù câu trả lời của @Klas Mellbourn đúng với Powershell, nhưng câu trả lời của bạn đúng hơn vì tôi đang chạy từ tệp lô DOS. Việc bổ sung chỉ thị "start" khiến chương trình thực thi không đồng bộ, đó chính là điều tôi cần! Thích!
Eric Hepperle - CodeSlayer2010

14
Có cách nào để nhập và thực hiện lệnh vào cửa sổ lô Git sau khi nó được mở từ trong tệp lô không?
Nick

1
@OviC Bạn có chắc chỉnh sửa của mình là chính xác không? "Tệp Chương trình (x86)" chỉ tồn tại theo kiến ​​trúc x64 cho các chương trình 32 bit.
Drunix

@Drunix bạn nói đúng, không có đường dẫn "Tệp chương trình (x86) \" trong hệ thống x86. Tôi đã quay trở lại. Cảm ơn.
Endoro

Nếu nó không được cài đặt trên ổ đĩa hệ thống thì sao? Điều gì sẽ xảy ra nếu nó không được cài đặt trong các tệp chương trình?
Michael Kruglos

44

Tôi không chắc ý của bạn chính xác về "môi trường Git Bash đầy đủ", nhưng tôi nhận được lời nhắc tuyệt vời nếu tôi làm như vậy

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

Trong PowerShell

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

Công --logintắc làm cho trình bao thực thi các tệp khởi động trình bao đăng nhập .


Cảm ơn @Klas Mellbourn. Câu trả lời của bạn là tốt cho Powershell, nhưng nếu không có chỉ thị "start" như trong câu trả lời của Endoro, nó sẽ tạm dừng thực hiện chương trình tiếp theo cho đến khi thoát khỏi shell, đây không phải là hành vi mong muốn, nếu không thì tôi đã bỏ phiếu cho bạn.
Eric Hepperle - CodeSlayer2010

Tôi sử dụng Console2 để mở cửa sổ cmdvà điều này gây ra hành vi lạ. Tôi đã đặt cái này trong một tệp .bat và bây giờ tất cả đều ổn:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault

25

Tôi thích sử dụng git-bash.exe thay vì sh.exe.

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

Bạn có thể ngừng đóng cửa sổ khi cuộc gọi /usr/bin/bash --login -ikết thúc;

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

Lưu ý: Tôi không chắc đây là một cách tốt :)


4
Câu trả lời hay, nhưng cửa sổ git-bash đóng ngay lập tức. Bạn có biết cách tắt tự động đóng sau khi lệnh kết thúc thực thi không?
Đánh dấu

@Mark Cảm ơn Mark. Tôi đã thêm một ví dụ cho câu trả lời của tôi ở trên. Đáng tiếc là tôi không chắc chắn như thế nào chúng ta nên làm điều đó một cách đúng đắn bởi vì tôi không phải là người cửa sổ :)
kujiy

1
[code] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] hoạt động tốt!
PauAI

@PauAI 2018 now ... Tôi đã thử start "" "%ProgramFiles%\Git\git-bash.exe"từ dòng lệnh quản trị viên và mặc dù nó hiển thị Git Bash trong một cửa sổ mới, nhưng việc nhập một lệnh đơn giản như lskhông có kết quả. Phương pháp này dường như không cho phép thực thi các lệnh linux. ... EDIT: Đã làm việc, chỉ mất một thời gian dài (2 phút) để chạy ls. Sau đó, ls lại chạy trong vòng chưa đầy 1 giây. ... kỳ dị.
Eric Hepperle - CodeSlayer2010

8

Tôi thích, đặt git vào biến môi trường và chỉ gọi

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

Các bước tạo biến Môi trường (Win7)

  • Từ màn hình nền, nhấp chuột phải vào biểu tượng Máy tính.
  • Chọn Thuộc tính từ menu ngữ cảnh.
  • Nhấp vào liên kết Cài đặt hệ thống nâng cao.
  • Nhấp vào Biến môi trường.
  • Trong phần Biến người dùng, nhấn nút MỚI, đặt tên biến là GIT_HOME, giá trị là (thư mục-nơi-bạn-cài-đặt-git).

    • đối với tôi nó là như vậy c:\tools\git, những người khác có thể cóC:\Program Files\Git
  • tìm PATHbiến môi trường và chọn nó. Nhấp vào Chỉnh sửa. (Nếu biến môi trường PATH không tồn tại, hãy nhấp vào Mới).

  • Trong cửa sổ Chỉnh sửa, thêm giá trị mới %GIT_HOME%%GIT_HOME%\bin. Bấm OK. Đóng tất cả các cửa sổ còn lại bằng cách nhấp vào OK.
  • [Đảm bảo bạn đóng CMD mà bạn muốn sử dụng cho git]
  • mở Command prompt mới và chỉ cần nhập shhoặc bashhoặcgit-bash

2
Cảm ơn! Tôi có thể làm cho điều này hoạt động với GIT_HOME dưới dạng C:\Program Files\Gitvà nhập git-bashtừ CMD. Ngoài ra, kỳ lạ, mặc dù bạn chỉ phải loại PATH để xem nội dung của nó, để xem nội dung của git này biến tùy chỉnh bạn phải gõecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010

Cảm ơn bạn, đây là một bổ sung tuyệt vời. Để thêm vào điều này, khi bạn có GIT_HOMEbiến và bạn sử dụng git-bashlệnh (hoặc git-cmd), nó sẽ mở nó trong một cửa sổ mới. Nếu bạn thêm vào biến môi trường "PATH", nó sẽ chuyển đổi trong cửa sổ hiện có đó. Bạn cũng có thể gõ exit"đăng xuất" của git bash mà vẫn giữ được lời nhắc DOS.
Keith E. Truesdell


3

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

Tôi đã đăng một câu trả lời ở đây.

Mở cửa sổ lệnh Windows và thực thi tập lệnh này. Nếu có thay đổi trong thư mục làm việc của bạn, nó sẽ mở một thiết bị đầu cuối bash trong thư mục làm việc của bạn và hiển thị trạng thái git hiện tại. Nó giữ cho cửa sổ bash mở bằng cách gọi lệnh bash.

Nếu bạn có nhiều dự án, bạn có thể tạo các bản sao của tập lệnh này với thư mục dự án khác nhau và gọi nó từ một tập lệnh lô chính.


3

Tôi đã sử dụng thông tin ở trên để giúp tạo ra một giải pháp lâu dài hơn. Sau đây sẽ tạo bí danh sh mà bạn có thể sử dụng để mở Git Bash:

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

Cảm ơn dpate! Tôi đã dán câu lệnh echo của bạn vào dòng lệnh và chạy shvà một cửa sổ git-bash được khởi chạy và tôi có thể chạy các lệnh một cách hoàn hảo. Có thể thêm một chút chi tiết vào câu trả lời của bạn giải thích cách hoạt động của điều này không? Tôi thà học cách câu cá hoạt động hơn là nhờ ai đó cho tôi một con cá, và tôi nghĩ điều đó sẽ có lợi cho những người khác đang tìm kiếm câu trả lời hay. cảm ơn
Eric Hepperle - CodeSlayer2010

0

Câu trả lời của Endoro đã cũ và tôi không thể bình luận;

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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.