Bash benzeri bir kabuğu Windows'ta nasıl kullanabilirim?


53

Linux ve Mac kullanıyorum ve yakında bazı komut satırı öğelerini öğreteceğim.

Windows'ta temel bir Mac / Linux Bash kabuğuna en çok benzeyen bir terminal penceresi vermek için ne yükleyebilirim?

Mümkünse .bash_aliases de tanımlayabilmek istiyorum.


3
Kullandığımız puttygerçek bir linux sunucusuna bağlanmak için. pencerelerde her zaman hem isteksiz hem de kullanmaya istekliydim cygwin, beceriksiz kurulum deneyimim yüzünden isteksizdim. Ama şahsen, msys'den daha kullanışlı ve vm'den daha hızlı buldum. bir kere kurulduktan sonra, cygwin bir şekilde taşınabilir hale gelir, sadece dizinini kopyalamak yeterlidir, ancak Windows kullanıcı adına göre her makine / kullanıcı için yeni bir kullanıcı adı oluşturacaktır (varsayılan olarak, en azından). Ancak, cygwin / msys özel bir "dağıtım" olarak görülebildiğinden, bazı [isteğe bağlı] komut anahtarlarının eksik olabileceğini unutmayın. onları test et.
n611x007

5
Microsoft, Windows 10'un bir sonraki güncellemesinin Bash'i içereceğini açıkladı.
Dmitri Nesteruk

Yanıtlar:


42

Sen yükleyebilir Cygwin veya MSYS / MinGW veya (kullanarak, örneğin bir sanal makine, tam bir Linux dağıtımı yükleyebilir VirtualBox ).


135 mb (25 mb paketlenmiş) bir başka bilgisayardan (taşınabilir) kopyalanan bir cygwin kullandım. mevcut bilgisayardaki yeni bilgisayarlara dayanarak yeni bir kullanıcı adı oluşturdu ve başka türlü mükemmel çalıştı. şu anki cygwin 800 mb, yapım ortamı, 200-300 mb kaynak kodu ve bazı şeyler içeriyor.
n611x007

2
Not: Artık Windows'ta yerel kullanıcı modu Linux kabuğu ve araçlarını çalıştırmanıza izin veren "Linux için Windows Alt Sistemi" ni yükleyebilirsiniz. Aşağıdaki cevaba bakınız ...
MrHinsh - Martin Hinshelwood 4:16

48

Artık Windows'ta yerel kullanıcı modu Linux kabuğunu ve araçlarını çalıştırmanızı sağlayan Linux için Windows Alt Sistemini yükleyebilirsiniz . Bu, Bash kabuğunu doğrudan Windows'ta çalıştırmanıza izin verir ve Ubuntu'ya dayanır.

Bu, Windows 10'da Yıldönümü Güncelleştirmesi (2016) ile birlikte sunuldu ve varsayılan olarak etkin değildir. Windows 10 Yıldönümü Güncelleme makinesinde yeni özelliği etkinleştirmek için aşağıdakileri yapın:

  1. Ayarlar -> Güncelleme ve Güvenlik -> Geliştiriciler için ve "Geliştirici modu" nu seçin.
  2. Denetim Masası -> Programlar ve Özellikler ve sol üst bölmedeki "Windows Özelliklerini Aç veya Kapat" ı tıklayın.
  3. İletişim kutusunda "Linux için Windows Alt Sistemi" seçeneğini işaretleyin ve Tamam'ı tıklayın.
  4. Makineyi yeniden başlat
  5. "Bash" kelimesini aratın ve tıklayın, bir komut istemi açmalı ve "Windows'ta Ubuntu" yüklemek isteyip istemediğinizi sormalı, "y" ile devam etmeli
  6. Kurulumdan sonra bir UNIX kullanıcı adı ve şifresi oluşturmanızı isteyecektir.
  7. Artık bash kabuğunu kullanmaya hazırsınız

Astoria, 2015 projesine geri döndüğünde Astoria, Windows'a Android uygulamaları getirmeye başladı ve bu amaçla Linux için Windows Subsystem (WSL) adlı bir Linux alt sistemi kurdular. Sonunda proje Astoria, UWP (Evrensel Windows Platformu) stratejisini baltaladığı için bırakıldı, ancak bazı kısımlar tutuldu ve Windows için bash'ın temelini oluşturdu. Microsoft, kurs boyunca desteklenen tüm araçları / ikili dosyaları içeren yerel bir görüntü sağlamak için Canonical (Ubuntu Linux'un yaratıcıları) ile birlikte çalıştı.

Burada daha fazla bilgi bulabilirsiniz,
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com / buildingapps / 2016/03/30 / bash-on-ubuntu pencerelerinde çalıştırma /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (video)



Bu cevabı daha çok seviyorum!
Peter,

1
@Peter Teşekkürler, dün kısaca denedim, gcc / g ++ ile devam edebildi, Firefox'u xserver üzerinden çalıştırabildi (oldukça yavaş, belki de CPU kullanımını kapattılar?), Chrome ve varsayılan tarayıcı çöktü ve bazı komutlar 'ekran' işe yaramadı, bash için hala beta sürümünde olan şeyler bir sonraki güncellemede ütülenmeli. Bunu söyledikten sonra, sadece Windows'ta yerel olarak bash kullanmak harika! Çok fazla olasılık açar. Kudos Microsoft!
Nemo

Bunu Powershell'de de çalıştırabilirsiniz (yönetici olarak çalıştırın): Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"Ve aşağıdakilerden herhangi birini Windows mağazasından yükleyin: Ubuntu, Debian, OpenSUSE, Kali Linux
Zhenhir

18

2019-05 itibariyle, 2019-01 boyunca WSL ile ilgili birkaç güncellemenin yanı sıra, her biriyle ilgili biraz ayrıntı içeren mevcut seçeneklerin bir listesi.

Öne çıkan seçenekler

Cygwin ve Babun

Cygwin aşağıdakileri sağlar:

  1. bir bash kabuğu ve Mintty terminali,
  2. Windows'ta çalıştırılmak üzere derlenmiş kapsamlı Linux yardımcı programları yelpazesi
  3. Linux programlarının Windows üzerinde çalışmasını sağlayan kapsamlı bir uyumluluk katmanıdır.

Cygwin, Linux uygulamalarını Windows'ta taşımayı kolaylaştırmayı amaçlamaktadır. Bazı C programları Unix için tasarlanmışsa ve borular, Unix tarzı dosya ve dizin erişimi vb. Gibi özellikleri kullanmayı bekliyorsa, Cygwin ve Cygwin, kod ve yabancı işletim sistemi arasında bir uyumluluk katmanı olarak hareket edecektir (Windows) . Bu, aynı C programının çok az veya hiç değişiklik yapmadan hem Linux hem de Windows'ta çalışmasını sağlar. Cygwin'i kurduğunuzda çok sayıda Linux programı uygulanmış ve çalıştırılabilir. Ancak, bu programların kullanıcısı, muhtemelen Unix’i iyi bilmeniz gerekecektir. Örneğin, /cygdrive/c/autoexec.batbunun yerine argümanları iletmeniz ve Windows satır sonlandırması ( ) yerine c:\autoexec.batUnix satır sonlandırması ( \n) ile çıkış yapmaya hazır olmanız gerekebilir \r\n.

Tüm Cygwin programlarının toplanması bir depo içerir ve Cygwin'in geleneksel bir Linux paket yöneticisi bulunmamasına rağmen, bu depodaki programları istediğiniz zaman çok sezgisel bir şekilde ekleyebilir, kaldırabilir ve güncelleyebilirsiniz (Cygwin's setup.exe kurulum tamamlandıktan sonra herhangi bir zamanda )

Babun , tam özellikli bir paket yöneticisi (pakt), kabuğu, git, otomatik güncellemeleri ve eklenti odaklı mimarisi için oh-my-zsh ile Cygwin'dir . Varsayılan kabuk zsh olmasına rağmen kolayca bash'a geçebilirsiniz. Ekstra ağırlığa aldırış etmiyorsanız vanilya Cygwin'den güzel bir yükseltme gibi görünüyor.

Mingw-w64

Mingw-w64 aşağıdakileri sağlar:

  1. bir bash kabuğu,
  2. adil miktarda Linux yardımcı programı,
  3. Linux uyumluluk katmanı olmadan (veya en az bir tanesiyle) çalışan uygulamalar oluşturmak için bir SW geliştirme aracı zinciri.

MinGW, öncelikle bir yazılım dağıtımı ve Windows için bir yapı platformudur. Özellikle, GCC, make, bash, vb. Gibi GNU derleyici araçlarının bir Windows bağlantı noktasıdır. Adil miktarda GNU aracı ve minimal bir Unix uyumluluk katmanı içerir.

Mingw-w64 ve Cygwin arasındaki temel fark önceliklidir: Cygwin, tüm büyük Unix sistem çağrılarının ve kütüphanelerinin tam bir uygulamasını içeren eksiksiz bir POSIX uyumluluk katmanı sağlamayı amaçlamaktadır; performans uyumluluğa ikincildir. MinGW, performansı hedeflediğinden, Windows altında kolayca ve / veya yeterince hızlı uygulanamayan belirli POSIX API'leri sağlamayacaktır. Ayrıca MinGW'nin ana hedefi S / W geliştiricileridir. Bununla birlikte, sıradan kullanıcılar kabuğunu ve genel amaç dahil programları da kullanabilirler.

Windows için MSYS2 ve Git

MSYS2 aşağıdakileri sağlar:

  1. bir bash kabuğu ve Mintty terminali,
  2. adil miktarda Linux yardımcı programı,
  3. OS programları yüklemek için tam özellikli bir komut satırı paket yöneticisi
  4. kapsamlı bir Linux uyumluluk katmanı olan veya olmayan bina uygulamalarını desteklemek için Cygwin ve MinGW'den parçalar.
  5. Windows üzerinde yazılımın kurulmasını, kullanılmasını, oluşturulmasını ve taşınmasını kolaylaştıran bir yazılım deposu ve bir paket yöneticisi (pacman).

MSYS2 ayrıca öncelikle MinGW gibi Windows için bir yazılım dağıtımı ve bir yapı platformudur, ancak hem Cygwin'in hem de MinGW'nin birleşimini birleştiriyor. MSYS2'yi "MinGW programları" veya "MSYS2 programları" oluşturmak için kullanabilirsiniz . Daha sonra, Cygwin'in uyumluluk katmanının gelişimini birkaç ekleme / değişiklikle yakından takip eden MSYS2'nin (msys-2.dll) uyumluluk katmanına bağlanması . Bununla birlikte, 2 projenin havuzları tamamen ilişkili değildir. Bu nedenle, hem MSYS2 hem de Cygwin'in sağlamasına grep.exerağmen, tamamen farklı bir sürüme sahip olabilirler.

Windows için Git, yüklü Git ile birlikte yalnızca MSYS2'dir veya en azından MSYS2'yi temel almaktadır . Aynı kabuk (bash), terminal (Mintty) ve paket yöneticisi (pacman) sağlar. Baskın Git'in Windows'ta çalışmasını sağlamanın en popüler yolu ve bununla birlikte güzel bir Unix ortamı elde etmek gibi görünüyor.

Linux için Windows Alt Sistemi (WSL)

WSL tamamen aynı yöntemi kullanarak aynı problemi çözer. WSL'deki bir Linux sisteminde çalıştıracağınız kodun aynısını, çekirdek çağrılarını engelleyen ve onları Windows çekirdek çağrılarına çeviren (Wine'ın tam tersi) çevirirsiniz. Elbette çeviri mükemmel olamaz ama Microsoft beta uyarısını iptal etti . WSL, 2018'den önce Windows Server'da bulunmadığı için bu kadar fazla ilgilenmedim. Her neyse, bir stok Ubuntu kurulumunda bulmayı beklediğiniz çoğu CLI ürününün bulunduğu güzel bir bash kabuğu alırsınız. Microsoft, resmen "WSL'nin GUI masaüstlerini veya uygulamalarını desteklemeyi amaçlamadığını" belirtti.ancak bunun nasıl yapılacağına dair resmi olmayan talimatlar var. Görünüşe göre işler şu anda (2018'in başlarında) WSL'nin ana dezavantajları şunlardır: a) Ekranı ve disk erişimini çok yavaşlatmak b) WSL (Linux) dosyalarını Windows'dan düzenlemeniz gerekmiyor) c) yalnızca 64 bit Windows'ta çalışır. İşte cygwin ile eski ama güzel bir karşılaştırma (Rich Turner'ın WSL ekibinin bir üyesi olduğunu ve WSL ile ilgili birçok yararlı bilgi yayınladığını unutmayın)

Ortak zemin

WSL dışında, yukarıdaki araçların çoğu ortak bir teknolojiyi (kütüphaneler, çalıştırılabilirler, kavramlar) paylaşır. Örneğin, MinGW ile birlikte gelen bash kabuğu, cygwin.dll dosyasının bir çatalı olan msys-2.dll dosyasına bağlıdır. Yani evet karışıklık için bol bol yer var :-)

Daha fazla seçenek

Cmder sadece güzel bir terminal ve Windows için bash benzeri bir kabuk sağlar. Ana bileşeni Conemu'dur (terminal). Ekler Bunun üzerine çın sağlar Güçlü Bash tarzı komut satırı düzenleme , özel bir istemi düzen ve Monokai renk düzenini. Yerel pencere konsolu programlarıyla yüksek düzeyde (veya belki de tamamen) uyumludur.

Scoop , birçok GNU aracı da dahil olmak üzere birçok tanınmış platformlar için komut satırı paket yöneticisi sağlar. Önceden derlenmiş paketleri indirir. Ne kabuk ne de terminal sağlamıyor, ancak bunun yerine windows 'cmd.exe altında çalışıyor (tüm kısıtlamalarıyla değil, aynı zamanda yerel Windows konsol programlarıyla tam uyumluluğu ile). Ayrıca derleyici paketi içermez (ancak derleyiciler ve geliştirme araçları, kepçe ile yükleyebileceğiniz tipik paketlerdir). Scoop'un yüklediği programların çoğu doğrudan MinGW / MSYS projesinden geliyor ya da araçlarını kullanarak inşa edildi.

Daha da fazla seçenek

Aşağıdaki çözümler aktif görünmüyor ve ben onları hiç test etmedim ama başkaları için işi yapıyor gibi görünüyorlar:

Gow (Windows'ta Gnu), kabuksuz Cygwin'in hafif alternatifidir. Yerel win32 binaryleri olarak derlenen ve windows 'cmd.exe aracılığıyla erişilebilen yaklaşık 130 derece açık kaynak kodlu Linux uygulaması yükleyen kullanışlı bir Windows yükleyici kullanıyor. Mümkün olduğu kadar küçük olacak şekilde tasarlanmıştır (yaklaşık 10 MB).

UnxUtils & GnuWin32 : UnxUtils , yalnızca Microsoft C-runtime msvcrt.dll dosyasına bağlı olarak çalıştırılabilen ortak GNU Unix benzeri yardımcı programların yerel Win32'ye bağlantı noktaları koleksiyonudur. Ana bölümü ve birkaç güncellemeyi indirmelisiniz. GnuWin32'nin UnxUtils'ten sonraki sürümleri vardır, ancak destekleyici dosyalar gerektirir (örn. DLL'ler)

MSYS'i & MinGW görünüyor gelmiş edilmiş obsoleted böylece onlara bakmadım MSYS2 & MinGW-W64 ile.

Cygwin ve MSYS2 ile ilgili bazı genel konular

Terminal ile ilgili

Mintty, Cygwin, MSYS2 ve türevlerinde kullanılan terminaldir. Windows yerel konsol programlarını çalıştırıyorsanız, Windows Komut İstemi için ağrısız bir değiştirme olmadığını unutmayın. Basit metin çıktısı olan programlar genellikle iyi çalışsa da, etkileşimli ve tam ekran programların sık sık sorunları olur. Oku mintty ana sayfasında daha fazla ve ayrıca girişi "Git Bash çalıştırılan Bazı yerli konsol programları çalışmıyor" okumak , Windows SSS için Git . Bu giriş, bu tür sorunlarla karşılaştığınızda yapmanız gereken önerilere sahiptir:

Bu sorunlara geçici bir çözüm bulmak için birkaç yöntem var:

  • Winpty yardımcı programını kullanarak sorunları olan programları çalıştırın . Bu, daha hoş mintty terminalini kullanmaya devam etmenizi sağlar, ancak birçok program için geçici çözüm gerekiyorsa, hantal hale gelebilir.
  • [cmd.exe'yi kullanın] ve "Hızlı Düzenleme", makul boyut ve geri kaydırma ve uygun unicode yazı tipi için yapılandırın. [Cmd.exe] 'nin diğer tuhaflıkları ile birlikte yaşamak zorunda kalacaksınız.
  • Conemu yükleyin ve kullanın .

Diğer sorunlar

Akılda tutulması gereken en önemli iki şey şunlardır:

  1. güç ve hata ayıklamak zor arasında bir ticaret var. Çözüm ne kadar güçlüyse, başlangıçta Linux katmanınızla alakasız görünecek şekillerde bile o kadar fazla şey yanlış gidebilir.

  2. Çok fazla Linux deneyiminiz yoksa, Cygwin / MSYS2 / MinGW gibi daha güçlü çözümleri kullanmayın.

UnxUtils ve GnuWin32 en az güce ve aynı zamanda size baş ağrısına neden olma potansiyeline sahiptir. Cygwin ve benzeri, hem güç hem de baş ağrısında çıtayı üste alacak. Cmder ortada bir yerlerde. Böylece en güçlü çözümlere ihtiyaç duyduğunuzda iyi bir uyku çekin ve tamamen konsantre olun. Yeni ve muhtemelen kararsız bir şeyi test ederken güçlü çözümler kullanmaktan kaçının. Ayrıca cmder gibi orta karmaşıklık çözümlerinin lekesiz olmadığını da unutmayın.

Linux komutları, pencereleri gölgelendirme komutlarını Cygwin / MSYS2 / MinGW gibi çözümlerde hata ayıklamak zor bir nedenidir. İşte bir örnek: timeout komutunu kullanan bir .bat dosyam vardı. Cygwin altında çalıştırıldığında başarısız olur çünkü zaman aşımı aynı zamanda bir Linux komutudur ancak farklı sözdizimi vardır. Sorunu tespit ettikten sonra, windows komutunun önceliğini sağlamak için .bat dosyasının en üstüne bir PATH = ... ekleyebileceğimi öğrendim. Ama sonra daha şifreli bir "Girdi yeniden yönlendirme desteklenmiyor" hatası aldım ve nedenini bulmadan önce bir geçici çözüm için çözüm buldum.

İşte cmder ile ilgili bir sorun örneği. Unison'un Windows sürümünü Cmder altında çalıştırıyordum ve bazı özel koşullar altında kesinlikle hiçbir hata mesajı ile asılı kalıyordu . Aynı komut her zaman cmd.exe altında mükemmel çalışıyordu. Komik olan şey, aynı zamanda mükemmel bir şekilde Cygwin'in altında çalışmasıydı (aslında Unicode dosya adlarına sahipseniz bir Cygwin terminali cmd.exe'den daha iyidir, çünkü cmd.exe genellikle Unicode metni hatalı biçimlendirir).

Bu rehber hakkında

2017-05 boyunca, bazılarını uzun zamandan beri kullanmama rağmen (çoğunlukla CygWin ve cmder, ancak geliştirme amacıyla) kullanmamla birlikte, yukarıdaki araçların farklılıklarını anlamaktan bıktım. Bu yüzden manzarayı kırmak için birkaç saat harcadım. Bu rehber, tuttuğum notların sonucudur. Bu alanda uzman değilim ama tüm ilgili bilgileri bulmak, eleştirel bir gözle okumak ve en önemli kısımları net bir şekilde sunmak için çok çalıştım. Bazı şeyler yanlış görünüyorsa lütfen yorumlayın ve düzeltmek için elimden geleni yapacağım.

Sonunda bazı terminoloji konularında bir özür: Bu yazıda bazen Linux terimini UNIX veya POSIX yerine kullanıyorum. Bunların aynı olmadığını biliyorum ama bu kadar uzun bir mesafeden bir konuya yaklaşırken aralarındaki farkı ayırt etmek çok zor. Zor olmasa bile, sahip olmadığım zaman alıyor ;-)


2
Bu mükemmel bir cevap, bulgularınızı ve deneyiminizi paylaştığınız için teşekkür ederiz.
Daniel Sokolowski

Kapsamlı cevap, ama öyle pacmandeğilpackman
Adrian Günter

Bu nasıl kabul edilebilir bir cevap olamazdı? Tüm bunları detaylandırdığınız için teşekkürler.
42.

10

En az miktarda MinGW ve ayrıca en az MSYS seti indirip kurmanızı öneririm . MinGW yükleyici, hangi paketleri kurmak istediğinizi seçmeniz için size kolay bir GUI sağlar. İstediğiniz tek BASH ise, kurulum birkaç megabayttan fazla sürmez.

GÜNCELLEME: Ben taşındı MSYS2 çok daha gelişmiş olduğunu ve paket yönetimi için Arch Linux pacman aracının limanı vardır. MSYS2 yükleyicisi ihtiyacınız olan her şeye sahiptir, ayrıca kesinlikle mükemmel olan mintty'yi kullanır .


10

Orada da çın mevcut GitHub'dan de . Kanca kitaplıklarını kullanarak kendisini Windows komut istemine entegre eder.

Proje tanımından:

Clink, yerel Windows shell cmd.exe dosyasını, zengin tamamlama, geçmiş ve satır düzenleme yetenekleri sağlayan GNU Readline kütüphanesinin güçlü komut satırı düzenleme özellikleriyle birleştirir.

(bu nedenle bir programlama dili olarak bash dili veya başka bir Unix ürünü sunmaz)

İşyerinde Linux kullanıyorum ve kendimi bazen Bash'den beklediğim gibi davranmayan cmd içinde sekmeyi buluyorum. Clink ile bu eksikliklerin bazılarının üstesinden gelebilirim.

Son zamanlarda, Linux sistemi işlevlerini taklit eden ve bunun üzerine bir tür sistem sağlayan (şu anda Arch Linux'a dayanan) flinux adlı umut verici ancak henüz bir şey yapamayan 'proje keşfettim.


Clink aslında dili değiştiriyor mu, yoksa sadece cmd.exe'deki bir şeyi geliştiriyor mu? Bu tamamen cevaptan net değil.
Sarge Borsch

Ctrl + R kullanarak ters arama, PATH arama komutu tamamlama vb. Gibi normal * nix kabuk özelliklerinden bazılarını kullanmanızı sağlar.
Andreas

Yani bir bash uygulaması değil, değil mi?
Sarge Borsch

Hımm, hayır. cmd.exeSadece sitede açıklandığı gibi bir uzantısı ;)
Andreas

7

Faffaffaff'ın söylediğine ek olarak , Git for Windows , Bash ve bazı genel Linux komut satırı programlarını (örn. Vim , sed ve gawk ) içerir. MSYS'e dayanıyor . Programların sürümü eski olsa da, örneğin Bash sürüm 3.1. Cygwin , yardımcı programların daha yeni sürümlerine sahip olacaktı.

Ayrıca ConEmu'yu terminal emülatörü olarak kullanıyorum (çoğunlukla Vim'de vurgulanan sözdizimi, sekme sayfalarında ve kolay kopya yapıştırmada). console2 da denememiş olmama rağmen başka bir popüler terminal emülatörüdür.


BTW: ConEmu ayrıca MSYS2 kurulumlarını tanır ve bazı Clink entegrasyonuna izin verir.
Andreas


1

Az önce Cygwin'i dahili olarak entegre eden Babun ile denedim ve bana da tadı güzel :)

İndirme dosyası yaklaşık 250 MB büyüklüğünde. Ancak kurulum basittir; bir şey yapılandırmanıza gerek yoktur ve sadece işe yarar!


Babun bütün cygwin'i içeriyor, gerçekten delice. Kurulum işlemi biraz bozucudur (şu anda zip arşivi, tehlikeli bir dosya olarak krom tarafından engellenmektedir). Ama şimdiye kadar en iyi terminal değiştirme buldum.
Tombart

Babun benim için çok yavaştı. Conemu ve git shell'i kullanmaya başladım
17'de
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.