Có cách nào để chạy tập lệnh Bash trên Windows không? [đóng cửa]


100

Tôi đã mua và sử dụng Windows 7 Ultimate, và tôi thích sử dụng nó để phát triển các ứng dụng. Một trong những mặt trái (như với mọi hệ điều hành) là tôi không thể chạy các tập lệnh Bash. Có cách nào để chạy tập lệnh Bash trên Windows bằng cách cài đặt một số phần mềm không? Nó không sao nếu nó không hoạt động 100%, nhưng miễn là có sẵn chức năng phổ biến nhất thì nó sẽ rất tuyệt.


3
@Rajish Không còn nữa…
msanford


1
@msanford, Điều này không có ý nghĩa. Tại sao chuỗi này được phép tồn tại trong khi bản sao của nó bị đóng?
Pacerier

@Pacerier Bản sao đã bị xóa, gần như chắc chắn là do tác giả của nó vì các mod có xu hướng không xóa câu hỏi. Đó có lẽ là những gì nhận xét của tôi đang đề cập đến. Tôi không biết tại sao tác giả lại xóa nó. Ngoài ra nó đã được 4 năm trước.
msanford

Câu trả lời:


80

Cài đặt Cygwin , bao gồm Bash trong số nhiều tiện ích GNU và Unix khác (nếu không có ai thì chắc chắn rằng bash sẽ rất hữu ích).

Một tùy chọn khác là MSYS của MinGW bao gồm bash và một tập hợp nhỏ hơn các tiện ích quan trọng hơn như awk. Cá nhân tôi sẽ thích Cygwin hơn vì nó bao gồm các công cụ nâng hạng nặng như Perl và Python mà tôi thấy rằng tôi không thể sống thiếu, trong khi MSYS bỏ qua những thứ này và giả sử bạn sẽ tự cài đặt chúng.

Đã cập nhật : Nếu bất kỳ ai quan tâm đến câu trả lời này và đang chạy MS-Windows 10, xin lưu ý rằng MS-Windows 10 có tính năng " Windows Subsystem For Linux " - sau khi được bật - cho phép bạn cài đặt hình ảnh chế độ người dùng của Ubuntu và sau đó chạy Bash trên đó. Điều này cung cấp khả năng tương thích 100% với Ubuntu để gỡ lỗi và chạy tập lệnh Bash, nhưng thiết lập này hoàn toàn độc lập với Windows và bạn không thể sử dụng tập lệnh Bash để tương tác với các tính năng của Windows (chẳng hạn như quy trình và API) ngoại trừ quyền truy cập hạn chế vào tệp thông qua tính năng DrvFS .


2
Xem Tài liệu về Hệ thống con của Windows dành cho Linux (WSL) để biết thêm thông tin.
stomy

1
WSL đã bị phản đối dành cho Windows 10 S bây giờ ... :(
Javier García Manzano

2
Không bị phản đối, đó chỉ là một trong những tính năng mà bạn không nhận được nếu mua phiên bản Windows " S mall edition" rẻ hơn . Nó cũng không có sẵn trong Phiên bản Home, IIRC.
Guss

Git cho phép bạn chạy tệp hàng loạt dễ dàng từ bất kỳ đâu trong cửa sổ youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

@MuhammadFaizanKhan - Cổng Git cho Windows, cũng như một số ứng dụng "hướng dòng lệnh" khác (Github Desktop là một ví dụ đáng chú ý) cũng đi kèm với cổng Bash của Windows. Những cổng này, thường xuyên hơn không, là các cổng MinGW (tức là được biên dịch bằng cách sử dụng MinGW và MSYS để tương thích với Posix). Cụ thể, nếu bạn xem cài đặt Git cho Windows, bạn sẽ thấy mingw32thư mục chứa MSYS về cơ bản. Vì vậy, Git cho Windows là MinGW bao gồm Git (tùy chọn của nó trong trình cài đặt MSYS) với trình cài đặt "đẹp hơn": superuser.com/a/1362301/10942
Guss

30

Tùy chọn tốt nhất tôi có thể tìm thấy là Git Windows Chỉ cần cài đặt nó và sau đó nhấp chuột phải vào và nhấp vào "Git Bash Here", điều này sẽ mở ra một cửa sổ bashnhập mô tả hình ảnh ở đây

Thao tác này sẽ mở ra một cửa sổ bash như thế này: nhập mô tả hình ảnh ở đây

và các lệnh linux hoạt động ...

Tôi đã thử các lệnh 'sh', 'vi', 'ssh', 'curl', v.v.


NÀY - nó rất đơn giản phải không?
Kalpesh Soni

yup thực sự tiện dụng
Garvit Jain

4
Bạn cũng có thể chỉ cần cài đặt MinGW mà không cần thêm Git nếu tất cả những gì bạn muốn là vỏ của nó.
Stefan Z Camilleri

Bạn có thể xem hướng dẫn một phút này tại đây youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan

25

Nếu bạn đang tìm kiếm thứ gì đó nguyên bản hơn một chút, bạn có thể sử dụng getGnuWin32 để cài đặt tất cả các công cụ dòng lệnh unix đã được chuyển. Điều đó cộng với winBash cung cấp cho bạn hầu hết môi trường unix làm việc. Thêm console2 để có trình giả lập đầu cuối tốt hơn và bạn gần như không thể biết được trên windows!

Cygwin nhìn chung là một bộ công cụ tốt hơn, nhưng tôi đã gặp phải những vấn đề bất ngờ vì sự phân chia giữa nó và các cửa sổ. Tuy nhiên, không có giải pháp nào trong số những giải pháp này tốt như một hệ thống linux gốc.

Bạn có thể muốn xem xét việc sử dụng virtualbox để tạo một máy ảo Linux với bản phân phối mà bạn lựa chọn. Thiết lập nó để chia sẻ một thư mục với hệ điều hành máy chủ và bạn có thể sử dụng môi trường phát triển linux thực sự và chia sẻ với windows. Chỉ cần để ý những điểm đánh dấu EOL, chúng luôn nhận được bạn.


Hoặc CoLinux: colinux.org
Guss

colinux không hoạt động trên 64-bit (chưa)
hexicle

Có ai biết về người kế nhiệm cho dự án win-bash không? Nó không còn tích cực phát triển và bị mắc kẹt trên bash v 1,14 (bash thích hợp, tính đến bài này, là v 4.4)
Bjartr

@Bjartr Các thành viên của Microsoft đã thêm một tính năng cho phép phiên bản gốc của bash chạy trên windows 7
Spencer Rathbun

@SpencerRathbun Điều đó sẽ chỉ chạy trên Windows 10, tôi tình cờ chạy trên Windows 7. Tôi cũng không chắc nó hoạt động như thế nào với việc trộn các tệp thực thi và đường dẫn linux và windows nên nó có thể không tốt hơn (theo quan điểm của tôi) so với cygwin bash .
Bjartr

11

Lựa chọn tốt nhất? Hỗ trợ Windows 10. Native Bash!


2
Không, không phải là lựa chọn tốt nhất. Bạn chỉ chạy linux theo cách đó, không bash IN cửa sổ - bạn không thể khởi chạy các tệp thực thi Windows từ bash đó (trừ khi bạn giải quyết nó bằng cbwin... nhưng đó là quá nhiều phiền phức cho một cách giải quyết khác).
ankostis

Lựa chọn 'tốt nhất' có lẽ là vấn đề về khẩu vị. Vì vậy, có lẽ bạn đúng. Tuy nhiên, nó cho phép tôi chạy bất kỳ tập lệnh bash nào (tốt .. hầu hết) trên PC windows của tôi.
Paul0515

1
Bạn có thể chạy ảo tất cả các tập lệnh bash - miễn là chúng không cố gắng tương tác với hệ điều hành chủ (Windows). WSL bash là một hệ thống con ảo hóa nhẹ có thể thực thi các tệp nhị phân ELF gốc (tức là Ubuntu) - nhưng bạn không thể thoát khỏi nó!
ankostis

10

Bạn luôn có thể cài đặt Cygwin để chạy Unix shell trong Windows. Tôi đã sử dụng Cygwin rộng rãi với Window XP.


Tôi cần cài đặt gói nào để chạy UNIX Shell trong Cygwin?
Tháp

@rFactor trang Cygwin bao gồm một trình cài đặt windows với tất cả các thành phần cần thiết.
Spencer Rathbun

Trang Cygwin giải thích những gì đã được chuyển và cách cài đặt nó. Nếu tất cả những gì bạn muốn là một shell thì cài đặt Cygwin cơ bản là đủ.
Michael Shopsin

9

Sau khi cài đặt git-scopeions ( https://code.google.com/p/gitextensions/ ), bạn có thể chạy tệp .sh từ dấu nhắc lệnh. (Không yêu cầu ./script.sh, chỉ cần chạy nó giống như tệp bat / cmd) Hoặc bạn có thể chạy chúng trong môi trường bash "đầy đủ" bằng cách sử dụng shell bash MinGW Git.

Tôi không phải là một fan hâm mộ lớn của Cygwin (vâng, tôi chắc chắn rằng nó thực sự mạnh mẽ), vì vậy việc chạy các tập lệnh bash trên windows mà không cần phải cài đặt nó hoàn toàn phù hợp với tôi.


1
Tôi không biết git-extension là gì nhưng mô tả của nó cho biết đó là giao diện người dùng đồ họa cho git. Bạn sẽ chạy các tập lệnh shell từ công cụ này như thế nào? Có lẽ ý bạn là chạy chúng với msys bash mà nó bao gồm?
Biến số khốn khổ

Chỉ để xác nhận - phần mở rộng git bao gồm một bản sao của bash và nó đặt nó trong đường dẫn. Tôi đã thử bashtừ một phiên bản powershell, không thành công, cài đặt git-extension và thử lại và nó hoạt động với tôi.
rtpHarry

4

Để chạy nguyên bản, bạn có thể sẽ cần sử dụng Cygwin (mà tôi không thể sống thiếu khi sử dụng Windows). Vì vậy, ngay lập tức, +1 cho Cygwin. Bất cứ điều gì khác sẽ là không văn minh.

TUY NHIÊN, điều đó đang được nói, gần đây tôi đã bắt đầu sử dụng kết hợp các tiện ích để dễ dàng PORT Bash script vào Windows để đồng nghiệp chống Linux của tôi có thể dễ dàng chạy các tác vụ phức tạp được các tiện ích GNU xử lý tốt hơn.

Tôi thường có thể chuyển một tập lệnh Bash sang Batch trong thời gian rất ngắn bằng cách mở tập lệnh gốc trong một ngăn và viết tệp Batch trong ngăn khác. Các công cụ mà tôi sử dụng như sau:

Tôi thích UnxUtils hơn GnuWin32 vì thực tế là [ai đó hãy sửa cho tôi nếu tôi sai] Các utils GnuWin thường phải được cài đặt, trong khi UnxUtils là các tệp nhị phân độc lập chỉ hoạt động ngoài hộp.

Tuy nhiên, CoreUtils không bao gồm một số tiện ích * NIX quen thuộc như cURL, tiện ích này cũng có sẵn cho Windows (curl.haxx.se/download.html).

Tôi tạo một thư mục cho các dự án và luôn SET PATH =. trong tệp .bat để không có lệnh nào khác ngoài các lệnh trình bao CMD cơ bản được tham chiếu (cũng như các UnxUtils cụ thể được yêu cầu trong thư mục dự án để tập lệnh Batch hoạt động như mong đợi).

Sau đó, tôi sao chép các tệp CoreUtils .exe cần thiết vào thư mục dự án và tham chiếu chúng trong tệp .bat chẳng hạn như ". \ Curl.exe -s google.com", v.v.

Chương trình Bat2Exe là nơi điều kỳ diệu xảy ra. Khi tệp Batch của bạn đã hoàn tất và đã được kiểm tra thành công, hãy khởi chạy Bat2Exe.exe và chỉ định đường dẫn đến thư mục dự án. Bat2Exe sau đó sẽ tạo một tệp nhị phân Windows chứa tất cả các tệp trong thư mục cụ thể đó và sẽ sử dụng .bat đầu tiên mà nó đi qua để sử dụng làm tệp thực thi chính. Bạn thậm chí có thể bao gồm tệp .ico để sử dụng làm biểu tượng cho tệp .exe cuối cùng được tạo.

Tôi đã thử một số loại chương trình này và nhiều tệp nhị phân được tạo bị gắn cờ là phần mềm độc hại, nhưng phiên bản Bat2Exe mà tôi đã tham khảo hoạt động hoàn hảo và các tệp .exe được tạo quét hoàn toàn sạch sẽ.

Tệp thực thi kết quả có thể được chạy tương tác bằng cách nhấp đúp hoặc chạy từ dòng lệnh với các tham số, v.v., giống như tệp Batch thông thường, ngoại trừ bạn sẽ có thể sử dụng chức năng của nhiều công cụ mà bạn thường sử dụng trong Bash.

Tôi nhận ra điều này diễn ra khá lâu, nhưng nếu tôi có thể hơi lạc đề, tôi cũng đã viết một tập lệnh Batch mà tôi gọi là PortaBashy để đồng nghiệp của tôi có thể khởi chạy từ một mạng chia sẻ có cài đặt Cygwin di động. Sau đó, nó sẽ đặt biến% PATH% thành định dạng * NIX thông thường (/ usr / bin: / usr / sbin: / bin: / sbin), v.v. và có thể khởi chạy vào chính trình bao Bash hoặc khởi chạy tệp mạnh hơn và trình giả lập thiết bị đầu cuối MinTTY khá đẹp.

Luôn có nhiều cách để hoàn thành những gì bạn đang cố gắng thực hiện; vấn đề chỉ là kết hợp các công cụ phù hợp với công việc và nhiều khi nó phụ thuộc vào sở thích cá nhân.


1

Có một khả năng lý thuyết nữa để làm điều đó: các phiên bản chuyên nghiệp của Windows có hỗ trợ POSIX tích hợp, vì vậy bash có thể đã được biên dịch cho Windows nguyên bản.

Đáng tiếc, nhưng tôi vẫn chưa tìm thấy một bản tổng hợp cho mình ...


3
Hệ thống hệ thống POSIX trên Windows đã bị loại bỏ [1]. Được thay thế bằng "Hệ thống con Windows dành cho Linux" dựa trên hệ thống ảo hóa nhẹ "Drawbridge" để chạy Ubuntu-bash chưa sửa đổi. Nhưng có một số sắc thái, ví dụ như khi ở trong hệ thống này, bạn không thể gọi các tệp thực thi Windows nữa! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/...
ankostis

@ankostis, Trên thực tế, với CU bạn có thể ...
Paul0515
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.