Windows'ta Bash komut dosyalarını çalıştırmanın bir yolu var mı? [kapalı]


100

Windows 7 Ultimate satın aldım ve kullanıyorum ve uygulama geliştirmek için kullanmayı seviyorum. Olumsuz taraflardan biri (her işletim sisteminde olduğu gibi) Bash betiklerini çalıştıramıyorum. Windows'ta Bash komut dosyalarını bazı yazılımlar yükleyerek çalıştırmanın bir yolu var mı? % 100 çalışmıyorsa sorun değil, ancak en yaygın işlevsellik mevcut olduğu sürece harika olmalı.


3
Artık ... Değil @Rajish
msanford


1
@msanford, Bu mantıklı değil. Bu ileti dizisinin yinelenen ileti kapatılırken yaşamasına neden izin veriliyor?
Pacerier

@Pacerier Kopya, modlar soruları silme eğiliminde olmadığından neredeyse kesinlikle yazarı tarafından silindi . Muhtemelen yorumumun kastettiği buydu. Yazarın neden sildiğini bilmiyorum. Ayrıca 4 yıl önceydi.
msanford

Yanıtlar:


80

Yükleme Cygwin (kime olmadan olası olduğunu bash çok faydalı zaten olacaktır) diğer birçok GNU ve Unix programları arasında Bash içerir.

Diğer bir seçenek ise , bash ve awk gibi daha önemli araçların daha küçük bir kümesini içeren MinGW'nin MSYS'sidir. Kişisel olarak Cygwin'i tercih ederdim çünkü onsuz yaşayamayacağımı düşündüğüm Perl ve Python gibi ağır kaldırma araçları içeriyor, MSYS ise bunlara göz atıyor ve bunları kendiniz kuracağınızı varsayıyor.

Güncellendi : Bu yanıtla ilgilenen biri varsa ve MS-Windows 10 çalıştırıyorsa, lütfen MS-Windows 10'un " Linux İçin Windows Alt Sistemi " özelliğine sahip olduğunu ve etkinleştirildikten sonra Ubuntu'nun kullanıcı modu görüntüsünü yüklemenizi ve ardından Bash'i bunun üzerinde çalıştırın. Bu, hata ayıklama ve Bash komut dosyalarını çalıştırma için Ubuntu ile% 100 uyumluluk sağlar, ancak bu kurulum Windows'tan tamamen bağımsızdır ve DrvFS özelliği aracılığıyla dosyalara sınırlı erişim dışında Windows özellikleriyle (işlemler ve API'ler gibi) etkileşim kurmak için Bash komut dosyalarını kullanamazsınız. .



1
WSL, Windows 10 S için kullanımdan kaldırıldı ... :(
Javier García Manzano

2
Kullanımdan kaldırılmadı, daha ucuz Windows " S alışveriş merkezi sürümünü" satın alırsanız elde edemeyeceğiniz özelliklerden yalnızca biri . Ayrıca Home Edition, IIRC'de de mevcut değildir.
Guss

Git, Windows'ta herhangi bir yerden toplu iş dosyasını kolayca çalıştırmanıza izin verir youtube.com/watch?v=7keNZT9579k
Muhammed Faizan Khan

@MuhammadFaizanKhan - Windows'a Git bağlantı noktası ve birkaç diğer "komut satırı odaklı" uygulama (dikkate değer bir örnek olarak Github Masaüstü) ayrıca Bash'in Windows bağlantı noktasıyla birlikte gelir. Bunlar çoğu zaman MinGW bağlantı noktalarıdır (yani Posix uyumluluğu için MinGW ve MSYS kullanılarak derlenir). Özellikle, Windows için Git kurulumunuza bakarsanız, mingw32temelde MSYS'yi içeren dizini görürsünüz . Yani Windows için Git, "daha güzel" bir yükleyiciye sahip Git'i (MSYS yükleyicide isteğe bağlıdır) içeren MinGW'dir: superuser.com/a/1362301/10942
Guss

31

Bulabildiğim en iyi seçenek Git Windows'dur Sadece kurun ve ardından sağ tıklayın ve "Git Bash Here" seçeneğini tıklayın, bu bir bash penceresi açacaktırgörüntü açıklamasını buraya girin

Bu, aşağıdaki gibi bir bash penceresi açacaktır: görüntü açıklamasını buraya girin

ve linux komutları çalışır ...

'Sh', 'vi', 'ssh', 'curl' vb. Komutları denedim


BU - bu kadar basit değil mi?
Kalpesh Soni

evet

4
İstediğiniz tek şey kabuğuysa, MinGW'yi Git'in fazladan şişmesi olmadan da kurabilirsiniz.
Stefan Z Camilleri

Bu bir dakikalık eğitimi buradan izleyebilirsiniz youtube.com/watch?v=7keNZT9579k
Muhammed Faizan Khan

25

Biraz daha yerel bir şey arıyorsanız, taşınan tüm unix komut satırı araçlarını kurmak için getGnuWin32'yi kullanabilirsiniz . Buna ek olarak winBash size çalışan bir unix ortamının çoğunu verir . Daha iyi bir terminal öykünücüsü için console2 ekleyin ve neredeyse pencerelerinizde söyleyemezsiniz!

Cygwin genel olarak daha iyi bir araç seti, ancak kendimi pencerelerle arasındaki bölünmeden dolayı sürpriz sorunlarla karşılaşırken buldum. Bu çözümlerin hiçbiri yerel bir linux sistemi kadar iyi değildir.

Tercih ettiğiniz dağıtımla bir Linux sanal makinesi oluşturmak için sanal kutuyu kullanmak isteyebilirsiniz . Ana bilgisayar işletim sistemi ile bir klasörü paylaşacak şekilde ayarlayın ve gerçek bir linux geliştirme ortamı kullanabilir ve pencerelerle paylaşabilirsiniz. Sadece şu EOL belirteçlerine dikkat edin, sizi her seferinde yakalarlar.


Veya CoLinux: colinux.org
Guss

colinux (henüz) 64 bit üzerinde çalışmıyor
hexicle

Kazan-bash projesinin halefini bilen var mı? Artık aktif olarak geliştirilmiyor ve bash v
1.14'te takılı değil

@Bjartr Microsoft çalışanları, bash'ın yerel bir sürümünün Windows 7'de çalışmasına
Spencer Rathbun

@SpencerRathbun Sadece Windows 10'da çalışacak, ben de Windows 7 kullanıyorum. Linux ve windows çalıştırılabilirlerini ve yollarını karıştırarak nasıl oynadığından emin değilim, bu yüzden (benim bakış açıma göre) cygwin bash'den daha iyi olmayabilir .
Bjartr

11

En iyi seçenek? Windows 10. Yerel Bash desteği!


2
Hayır, en iyi seçenekler değil. Linux'u bu şekilde çalıştırırsınız, IN pencerelerine basmak yerine - Windows çalıştırılabilir dosyalarını bu bash'dan başlatamazsınız (bununla geçici bir çözüm bulamazsanız cbwin... ama bu zaten bir geçici çözüm için çok fazla karışıklıktır).
ankostis

"En iyi" seçeneği muhtemelen bir zevk meselesidir. Yani belki haklısın. Bununla birlikte, Windows PC'mde herhangi bir (iyi .. çoğu) bash betiğini çalıştırmamı sağlıyor.
Paul0515

1
Ana işletim sistemi (Windows) ile etkileşim kurmaya çalışmadıkları sürece tüm bash komut dosyalarını sanal olarak çalıştırabilirsiniz. WSL bash, orijinal ELF ikili dosyalarını (yani Ubuntu) çalıştırabilen hafif bir sanallaştırma alt sistemidir - ancak ondan kaçamazsınız!
ankostis

10

Windows altında bir Unix kabuğu çalıştırmak için her zaman Cygwin'i kurabilirsiniz . Cygwin'i Windows XP ile yoğun bir şekilde kullandım.


Cygwin'de UNIX Shell'i çalıştırmak için hangi paketi kurmam gerekiyor?
Tower

@rFactor Cygwin sayfası, gerekli tüm bileşenleri içeren bir Windows yükleyici içerir.
Spencer Rathbun

Cygwin sitesi, nelerin taşındığını ve nasıl kurulacağını açıklıyor. Tek istediğiniz bir kabuksa, temel Cygwin kurulumu yeterli olacaktır.
Michael Shopsin

9

Git-uzantılarını ( https://code.google.com/p/gitextensions/ ) yükledikten sonra komut isteminden .sh dosyasını çalıştırabilirsiniz. (Hayır ./script.sh gereklidir, sadece bir bat / cmd dosyası gibi çalıştırın) Veya bunları MinGW Git bash kabuğunu kullanarak "tam" bir bash ortamında çalıştırabilirsiniz.

Cygwin'in büyük bir hayranı değilim (evet, gerçekten güçlü olduğundan eminim), bu yüzden benim için mükemmel bir şekilde kurmak zorunda kalmadan pencerelerde bash betikleri çalıştırıyorum.


1
Git-uzantılarının ne olduğunu bilmiyorum ama açıklamasına göre git için grafiksel bir kullanıcı arayüzü var. Bu araçtan kabuk komut dosyalarını nasıl çalıştırırsınız? Belki de onları içerdiği msys bash ile çalıştırmak istiyorsunuz?
Miserable Variable

Sadece onaylamak için - git-extensions bash'ın bir kopyasını içerir ve onu yola koyar. bashBir powershell örneğinden denedim , başarısız oldum , git uzantılarını yükledim ve yeniden denedim ve benim için çalıştı.
rtpHarry

4

Yerel olarak çalışabilmek için, Cygwin'i kullanmanız gerekecektir (Windows kullanmadan yaşayamıyorum). Bu yüzden Cygwin için +1. Başka her şey medeniyetsiz olurdu.

ANCAK, söylendiği gibi, kısa bir süre önce, Linux karşıtı iş arkadaşlarımın GNU yardımcı programları tarafından daha iyi idare edilen karmaşık görevleri kolayca yürütebilmeleri için, Windows'a Bash komut dosyalarını kolayca PORT Bash için bir yardımcı program kombinasyonu kullanmaya başladım.

Genellikle bir Bash komut dosyasını Batch'e çok kısa sürede bir bölmede orijinal komut dosyasını açıp diğer bölmede bir Batch dosyası yazarak taşıyabilirim. Kullandığım araçlar aşağıdaki gibidir:

UnxUtils'i GnuWin32'ye tercih ederim çünkü [yanlışsam birisi lütfen beni düzeltin] GnuWin araçlarının normalde yüklenmesi gerekirken, UnxUtils'ler kutudan çıkar çıkmaz çalışan bağımsız ikili dosyalar.

Ancak CoreUtils, Windows için de kullanılabilen cURL gibi bazı tanıdık * NIX yardımcı programlarını içermez (curl.haxx.se/download.html).

Projeler için bir klasör oluşturuyorum ve her zaman SET PATH =. .bat dosyasında, temel CMD kabuk komutlarından başka hiçbir komuta başvurulmaması için (ayrıca Toplu komut dosyasının beklendiği gibi çalışması için proje klasöründe gerekli olan belirli UnxUtils).

Ardından gerekli CoreUtils .exe dosyalarını proje klasörüne kopyalayıp ". \ Curl.exe -s google.com" gibi .bat dosyasında referans veriyorum.

Bat2Exe programı sihrin gerçekleştiği yerdir. Toplu iş dosyanız tamamlandıktan ve başarıyla test edildikten sonra, Bat2Exe.exe'yi başlatın ve proje klasörünün yolunu belirtin. Bat2Exe daha sonra o belirli klasördeki tüm dosyaları içeren bir Windows ikili dosyası oluşturacak ve karşısına çıkan ilk .bat dosyasını ana yürütülebilir dosya olarak kullanacaktır. Oluşturulan son .exe dosyasının simgesi olarak kullanmak için bir .ico dosyası bile dahil edebilirsiniz.

Bu tür programlardan birkaçını denedim ve oluşturulan ikili dosyaların çoğu kötü amaçlı yazılım olarak işaretlendi, ancak başvurduğum Bat2Exe sürümü mükemmel çalışıyor ve oluşturulan .exe dosyaları tamamen temiz tarıyor.

Ortaya çıkan yürütülebilir dosya, çift tıklanarak etkileşimli olarak çalıştırılabilir veya normal bir Toplu İş dosyası gibi komut satırından parametrelerle vb. Çalıştırılabilir, ancak normalde kullanacağınız birçok aracın işlevselliğini kullanabilirsiniz. Bash'de.

Bunun oldukça uzadığını fark ettim, ancak biraz konuyu ele alırsam, iş arkadaşlarımın taşınabilir bir Cygwin kurulumunu içeren bir ağ paylaşımından başlatabilecekleri PortaBashy adını verdiğim bir Batch betiği de yazdım. Daha sonra% PATH% değişkenini normal * NIX biçimine (/ usr / bin: / usr / sbin: / bin: / sbin) vb. Ayarlar ve Bash kabuğunun kendisini başlatabilir veya daha güçlü olanı başlatabilir ve oldukça MinTTY terminal emülatörü.

Yapmaya çalıştığınız şeyi başarmanın her zaman çok sayıda yolu vardır; bu sadece iş için doğru araçları birleştirme meselesidir ve çoğu zaman kişisel tercihlere bağlıdır.


1

Bunu yapmanın bir teorik olasılığı daha var: Windows'un profesyonel sürümleri yerleşik POSIX desteğine sahiptir, bu nedenle bash, Windows için yerel olarak derlenmiş olabilir.

Yazık, ama hala kendim derlenmiş bir tane bulamadım ...


3
Windows üzerinde POSIX sybsystem terk edildi [1]. Değiştirilmemiş Ubuntu-bash çalıştırmak için "Drawbridge" hafif sanallaştırma sistemini temel alan "Linux için Windows Alt Sistemi" ile değiştirildi. Ancak bazı nüanslar vardır, örneğin bu sisteme girdikten sonra artık Windows çalıştırılabilir dosyalarını arayamazsınız! [1] blogs.msdn.microsoft.com/wsl/2016/04/22/…
ankostis

@ankostis, Aslında, CU ile şunları yapabilirsiniz ...
Paul0515
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.