Apakah ada cara untuk menjalankan skrip Bash di Windows? [Tutup]

100

Saya telah membeli dan saya menggunakan Windows 7 Ultimate, dan saya suka menggunakannya untuk mengembangkan aplikasi. Salah satu sisi negatifnya (seperti setiap OS) adalah saya tidak dapat menjalankan skrip Bash. Apakah ada cara untuk menjalankan skrip Bash di Windows dengan menginstal beberapa perangkat lunak? Tidak apa-apa jika tidak berfungsi 100%, tetapi selama fungsionalitas yang paling umum tersedia, ini akan bagus.

Menara
sumber
3
@Rajish Tidak lagi…
msanford
1
@msanford, Ini tidak masuk akal. Mengapa utas ini dibiarkan hidup sementara duplikatnya ditutup?
Pacerier
@Pacerier Duplikat telah dihapus, hampir pasti oleh pembuatnya karena mod cenderung tidak menghapus pertanyaan. Mungkin itulah maksud komentar saya. Saya tidak tahu mengapa penulis menghapusnya. Juga itu 4 tahun yang lalu.
msanford

Jawaban:

80

Instal Cygwin , yang menyertakan Bash di antara banyak utilitas GNU dan Unix lainnya (tanpanya, kemungkinan besar bash akan sangat berguna).

Pilihan lainnya adalah MSYS MinGW yang menyertakan bash dan seperangkat lebih kecil dari utilitas yang lebih penting seperti awk. Secara pribadi saya lebih suka Cygwin karena termasuk alat pengangkat berat seperti Perl dan Python yang menurut saya tidak dapat saya hidup tanpanya, sementara MSYS berhemat pada ini dan berasumsi Anda akan menginstalnya sendiri.

Diperbarui : Jika ada yang tertarik dengan jawaban ini dan menjalankan MS-Windows 10, harap dicatat bahwa MS-Windows 10 memiliki fitur " Windows Subsystem For Linux " yang - setelah diaktifkan - memungkinkan Anda untuk menginstal gambar mode pengguna Ubuntu dan lalu jalankan Bash itu. Ini memberikan 100% kompatibilitas dengan Ubuntu untuk debugging dan menjalankan skrip Bash, tetapi pengaturan ini sepenuhnya berdiri sendiri dari Windows dan Anda tidak dapat menggunakan skrip Bash untuk berinteraksi dengan fitur Windows (seperti proses dan API) kecuali untuk akses terbatas ke file melalui fitur DrvFS .

Guss
sumber
2
Lihat Dokumentasi Subsistem Windows untuk Linux (WSL) untuk info lebih lanjut.
Stomy
1
WSL tidak lagi digunakan untuk Windows 10 S sekarang ... :(
Javier García Manzano
2
Tidak ketinggalan, itu hanya salah satu fitur yang tidak Anda dapatkan jika Anda membeli Windows " S mall edition" yang lebih murah. Ini juga tidak tersedia di Edisi Rumah, IIRC.
Guss
Git memungkinkan Anda menjalankan file batch dengan mudah dari mana saja di windows youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
@MuhammadFaizanKhan - Port Git ke Windows, serta beberapa aplikasi "berorientasi baris perintah" lainnya (Github Desktop sebagai contoh penting) juga hadir dengan port Windows Bash. Ini, lebih sering daripada tidak, adalah port MinGW (yaitu dikompilasi menggunakan MinGW dan MSYS untuk kompatibilitas Posix). Secara khusus, jika Anda melihat instalasi Git untuk Windows, Anda akan melihat mingw32direktori yang pada dasarnya berisi MSYS. Jadi Git untuk Windows adalah MinGW yang menyertakan Git (opsional di penginstal MSYS) dengan penginstal "lebih bagus": superuser.com/a/1362301/10942
Guss
30

Opsi terbaik yang bisa saya temukan adalah Git Windows. Instal saja lalu klik kanan dan klik "Git Bash Here" ini akan membuka jendela bashmasukkan deskripsi gambar di sini

Ini akan membuka jendela bash seperti ini: masukkan deskripsi gambar di sini

dan perintah linux bekerja ...

Saya sudah mencoba perintah 'sh', 'vi', 'ssh', 'curl', dll ...

Garvit Jain
sumber
INI - tidak begitu sederhana?
Kalpesh Soni
yup sangat berguna
Garvit Jain
4
Anda juga dapat menginstal MinGW tanpa tambahan Git jika yang Anda inginkan hanyalah cangkangnya.
Stefan Z Camilleri
Anda dapat menonton tutorial satu menit ini di sini youtube.com/watch?v=7keNZT9579k
Muhammad Faizan Khan
25

Jika Anda mencari sesuatu yang lebih asli, Anda dapat menggunakan getGnuWin32 untuk menginstal semua alat baris perintah unix yang telah dipindahkan. WinBash plus itu memberi Anda sebagian besar lingkungan unix yang berfungsi. Tambahkan console2 untuk emulator terminal yang lebih baik dan Anda hampir tidak dapat memberi tahu Anda di windows!

Cygwin adalah toolkit yang lebih baik secara keseluruhan, tetapi saya mendapati diri saya mengalami masalah kejutan karena pembagian antara itu dan jendela. Tak satu pun dari solusi ini sebaik sistem linux asli.

Anda mungkin ingin melihat penggunaan virtualbox untuk membuat VM linux dengan distro pilihan Anda. Atur untuk berbagi folder dengan os host, dan Anda dapat menggunakan lingkungan pengembangan linux yang sebenarnya, dan berbagi dengan windows. Berhati-hatilah dengan penanda EOL itu, mereka mengerti setiap saat.

Spencer Rathbun
sumber
Atau CoLinux: colinux.org
Guss
colinux tidak berfungsi pada 64-bit (belum)
hexicle
Adakah yang tahu tentang penerus proyek win-bash? Itu tidak lagi secara aktif dikembangkan dan macet pada bash v 1.14 (bash tepat, pada posting ini, adalah v 4.4)
Bjartr
@Bjartr Orang-orang Microsoft telah menambahkan fitur untuk memungkinkan versi asli bash berjalan di windows 7
Spencer Rathbun
@SpencerRathbun Itu hanya akan berjalan di Windows 10, saya kebetulan menggunakan Windows 7. Saya juga tidak yakin bagaimana cara memainkannya dengan mencampur linux dan windows yang dapat dieksekusi dan jalur sehingga mungkin tidak lebih baik (dari sudut pandang saya) daripada cygwin bash .
Bjartr
11

Pilihan terbaik? Windows 10. Dukungan Bash Asli!

Paul0515
sumber
2
Tidak, bukan pilihan terbaik. Anda cukup menjalankan linux dengan cara itu, bukan bash IN windows - Anda tidak dapat meluncurkan Windows yang dapat dieksekusi dari bash itu (kecuali Anda mengatasinya dengan cbwin... tapi itu sudah terlalu merepotkan hanya untuk mengatasinya).
ankostis
Pilihan 'terbaik' mungkin adalah soal selera. Jadi mungkin Anda benar. Namun, ini memungkinkan saya untuk menjalankan (yah .. sebagian besar) skrip bash di PC windows saya.
Paul0515
1
Anda dapat menjalankan semua skrip bash virtual - selama skrip tersebut tidak mencoba berinteraksi dengan OS host (Windows). WSL bash adalah subsistem virtualisasi ringan yang dapat menjalankan binari ELF asli (yaitu Ubuntu) - tetapi Anda tidak dapat menghindarinya!
ankostis
10

Anda selalu dapat menginstal Cygwin untuk menjalankan shell Unix di bawah Windows. Saya menggunakan Cygwin secara ekstensif dengan Window XP.

Michael Shopsin
sumber
Paket apa yang harus saya instal untuk menjalankan UNIX Shell di Cygwin?
Menara
@rFactor halaman Cygwin menyertakan penginstal windows dengan semua komponen yang diperlukan.
Spencer Rathbun
Situs Cygwin menjelaskan apa yang telah di-porting dan bagaimana cara menginstalnya. Jika yang Anda inginkan hanyalah sebuah shell maka instalasi Cygwin dasar sudah cukup.
Michael Shopsin
9

Setelah menginstal git-extensionions ( https://code.google.com/p/gitextensions/ ) Anda dapat menjalankan file .sh dari command prompt. (Tidak diperlukan ./script.sh, jalankan saja seperti file bat / cmd) Atau Anda dapat menjalankannya di lingkungan bash "penuh" dengan menggunakan shell bash MinGW Git.

Saya bukan penggemar Cygwin (ya saya yakin ini benar-benar hebat), jadi menjalankan skrip bash di windows tanpa harus menginstalnya sempurna untuk saya.

Simon Featherstone
sumber
1
Saya tidak tahu apa itu git-extensions tetapi deskripsinya mengatakan itu adalah antarmuka pengguna grafis untuk git. Bagaimana Anda menjalankan skrip shell dari alat ini? Mungkin Anda bermaksud menjalankannya dengan msys bash yang disertakan?
Variabel Miserable
Sekadar konfirmasi - git-extensions tidak menyertakan salinan bash dan mengaturnya di jalur. Saya mencoba bashdari contoh PowerShell, gagal, menginstal git-extensions dan mencoba lagi dan itu berhasil untuk saya.
rtpHarry
4

Untuk menjalankan secara native, Anda mungkin perlu menggunakan Cygwin (yang saya tidak bisa hidup tanpanya saat menggunakan Windows). Jadi langsung saja, +1 untuk Cygwin. Yang lainnya tidak akan beradab.

NAMUN, itu dikatakan, saya baru-baru ini mulai menggunakan kombinasi utilitas untuk dengan mudah PORT Bash skrip ke Windows sehingga rekan kerja anti-Linux saya dapat dengan mudah menjalankan tugas-tugas kompleks yang lebih baik ditangani oleh utilitas GNU.

Saya biasanya dapat mem-port skrip Bash ke Batch dalam waktu yang sangat singkat dengan membuka skrip asli di satu panel dan menulis file Batch di panel lain. Alat-alat yang saya gunakan adalah sebagai berikut:

Saya lebih suka UnxUtils daripada GnuWin32 karena fakta bahwa [seseorang tolong koreksi saya jika saya salah] Utils GnuWin biasanya harus diinstal, sedangkan UnxUtils adalah binari mandiri yang hanya berfungsi di luar kotak.

Namun, CoreUtils tidak menyertakan beberapa utilitas * NIX yang sudah dikenal seperti cURL, yang juga tersedia untuk Windows (curl.haxx.se/download.html).

Saya membuat folder untuk proyek, dan selalu SET PATH =. dalam file .bat sehingga tidak ada perintah lain selain perintah shell CMD dasar yang dirujuk (serta UnxUtils tertentu yang diperlukan dalam folder proyek agar skrip Batch berfungsi seperti yang diharapkan).

Kemudian saya menyalin file .exe CoreUtils yang diperlukan ke dalam folder proyek dan mereferensikannya di file .bat seperti ". \ Curl.exe -s google.com", dll.

Program Bat2Exe adalah tempat keajaiban terjadi. Setelah file Batch Anda selesai dan berhasil diuji, luncurkan Bat2Exe.exe, dan tentukan jalur ke folder proyek. Bat2Exe kemudian akan membuat biner Windows yang berisi semua file di folder tertentu itu, dan akan menggunakan .bat pertama yang muncul untuk digunakan sebagai file eksekusi utama. Anda bahkan dapat menyertakan file .ico untuk digunakan sebagai ikon untuk file .exe terakhir yang dibuat.

Saya telah mencoba beberapa program jenis ini, dan banyak binari yang dihasilkan ditandai sebagai malware, tetapi versi Bat2Exe yang saya referensikan berfungsi dengan sempurna dan file .exe yang dihasilkan dipindai sepenuhnya bersih.

Eksekusi yang dihasilkan dapat dijalankan secara interaktif dengan mengklik dua kali, atau dijalankan dari baris perintah dengan parameter, dll., Seperti file Batch biasa, kecuali Anda akan dapat memanfaatkan fungsionalitas dari banyak alat yang biasanya Anda gunakan di Bash.

Saya menyadari ini semakin lama, tetapi jika saya mungkin sedikit menyimpang, saya juga telah menulis skrip Batch yang saya sebut PortaBashy yang dapat diluncurkan oleh rekan kerja saya dari jaringan bersama yang berisi instalasi Cygwin portabel. Ini kemudian menetapkan variabel% PATH% ke format normal * NIX (/ usr / bin: / usr / sbin: / bin: / sbin), dll. Dan dapat diluncurkan ke shell Bash itu sendiri atau meluncurkan yang lebih kuat dan emulator terminal MinTTY yang cantik.

Selalu ada banyak cara untuk mencapai apa yang ingin Anda lakukan; ini hanya masalah menggabungkan alat yang tepat untuk pekerjaan itu, dan seringkali itu bermuara pada preferensi pribadi.

rubynorail.dll
sumber
1

Ada satu lagi kemungkinan teoritis untuk melakukannya: versi profesional Windows memiliki dukungan POSIX bawaan, jadi bash dapat dikompilasi untuk Windows secara asli.

Sayang sekali, tapi saya masih belum menemukan yang dikompilasi sendiri ...

tanaman merambat
sumber
3
Sistem sistem POSIX pada Windows telah ditinggalkan [1]. Digantikan oleh "Windows Subsystem for Linux" yang didasarkan pada sistem virtualisasi ringan "Drawbridge" untuk menjalankan Ubuntu-bash yang tidak dimodifikasi. Tetapi ada beberapa perbedaan, misalnya sekali berada di dalam sistem ini, Anda tidak dapat memanggil Windows yang dapat dieksekusi lagi! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/...
ankostis
@ankostis, Sebenarnya, dengan CU Anda dapat ...
Paul0515