VS Code terminalim için Windows'ta Ubuntu'da Bash'i (WSL) nasıl kullanırım?


88

Diğer sorular git-bash gibi şeylerin nasıl kullanılacağıyla ilgilenirken, VS Code terminali aynı olmadığından yeni WSL'ye bir dönüş vermek: git- yerine gerçek bir Ubuntu Linux alt sistemi üzerinde çalışan bash'a erişmenizi sağlar. Windows alt sisteminde çalışan bash terminali.

Öyleyse, onu VS Code terminali olarak nasıl çalıştırabiliriz ve özellikle işlevsel bir geliştirme ortamı terminali olarak çalışmasını nasıl sağlayabiliriz?

Git-bash'dan farklı olarak, bu maalesef o kadar basit değildir, çünkü WSL'deki Ubuntu Linux yapılandırması, WSL ile Windows'un kendisi arasındaki etkileşim nedeniyle Windows Program Dosyaları dizininizden çalıştırmaya çalışan (ve başarısız olan) NPM gibi bazı sorunlar sağlayabilir. yol terimleri ve Compass gibi bazı paketler, Linux üzerinde geliştirmeye alışkın olmayan biri için mutlaka hemen açık olmayan nedenlerden dolayı başarısız oluyor. VS Code için en sık kullanılan araçların apt-getveya aracılığıyla kurulduğunda çalışacağı güvenilir bir WSL terminal ortamına sahip olmanın basit bir yolu nedir npm?

Yanıtlar:


185

Bu yanıt, VS Code'daki terminal için WSL kullanırken diğerlerinin 1-2 saat sorun giderme harcamaktan ve yaygın sorunlar için yavaşça farklı çözümler bulmaktan kaçınmalarına yardımcı olmayı amaçlamaktadır. Belirli paketlerin kurulumunu kapsamaz, daha ziyade, varlıklarına bağlı olan şeyleri kurarken ve ilgili ortak ayarları düzeltirken bağımlılıklar olarak düzgün şekilde kurulamayan yaygın olanları kapsar.

Adımların özeti

  • WSL yüklendi
  • Terminal için yapılandırılmış VS Kodu (veya diğer IDE)
  • .Profile'da NPM yüklendi ve yol düzeltmesi (diğer araçlarla yardımcı olabilir)
  • build-essential yüklendi (make / gcc / etc kullanan tüm araçlara yardımcı olur)
  • WSL kullanarak VS Code Görevleri
  • Ekstralar

Başlarken ve Gereksinimler

  • WSL'nin kurulu olması gerekir . (Bu , uygun güncellemelerle 64 bit Windows 10 çalıştırmanız gerektiği anlamına gelir ) Henüz yüklenmediyse kurulum kılavuzunu izleyin . Bu, bazı yeniden başlatmalar gerektirecektir.

VS Kodu Terminal Yapılandırması

Ya CTRL+ ,klavye kısa veya FilePreferencesSettings

Düzenleme penceresinin sağ üst köşesinde, sizin için doğru bağlamda çalıştığınızdan emin olun: Kullanıcı Ayarları veya Çalışma Alanı Ayarları .

görüntü açıklamasını buraya girin

Ayarlar arama çubuğuna yazın terminal.integrated.shell.windows(veya sizi yeterince uzağa götüren her şeyi)

Ayarı gerçek ayarlar dosyasında bulun, kullanın Edit(fareyi satırın üzerine getirin, solda olacaktır: faresiz bir dokunmatik ekranda, satırın soluna dokunmanız yeterlidir) ve öğesini seçinReplace in Settings

görüntü açıklamasını buraya girin

Sağ bölmede, değiştirilen json dosyasında oluşturulan girişi değiştirin: önceki ayarı şununla değiştirin:

"C:\\WINDOWS\\Sysnative\\bash.exe"

görüntü açıklamasını buraya girin

Diğer IDE'ler: IntelliJ

Ayarlar / Araçlar / Terminal'i açın ve "Kabuk yolu" alanını şu şekilde ayarlayın: "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"

WSL Ubuntu Bash Terminalinizi geliştiriciler için işlevsel hale getirme

Terminali açmak için CTRL+ kullandığınızda `, artık bir bash terminaliniz olmalıdır.

Bash.exe'yi ilk kez çalıştırıyorsanız, Ubuntu'yu kurmanız istenebilir. Böyle yap. Kurulumunuz tamamlandığında, WSL Ubuntu'da kullanılacak kullanıcı adınızı ve şifrenizi seçin. Bunların mevcut Windows hesabınızla çakışması gerekmez ve Windows hesabınızın şifresindeki değişikliklere bağlı olarak değişmeyeceklerini unutmamak önemlidir.

İşiniz bittiğinde, terminalinizde bir bash komut isteminiz olacaktır.görüntü açıklamasını buraya girin

Windows'taki git-bash'dan farklı olarak, bunun ayrı bir ortam olduğunu unutmayın. Windows yazılımını kendi dışında başlatmak için kullanılabilse de , bunları gerçek terminalde çalıştırmak için uygun Ubuntu paketlerine ihtiyacınız olacak.

Şu anda WSL, beklediğiniz veya alışık olabileceğiniz her şeyle yüklü olarak gelmemektedir ve varsayılan profil ayarlarına bağlı olarak bazı şeyler Windows'a yüklediğiniz yazılımla çakışabilir.

Güncellemeler ve git

Not: Bunları yalnızca tek bir parçaya ihtiyaç duyan kişiler için sudo olarak belgeleyeceğim, ancak başlangıçta bir seçenek bunun yerine sudo suaşağıdaki komutları sudo olmadan çalıştırmaktır.

Ubuntu paketlerinizin güncel olduğundan emin olun :

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove

Git'i yükle:

sudo apt-get install git

Node.js ve NPM

Windows'ta zaten Node veya NPM yüklüyse, bunları Ubuntu'da çalıştırmak, yol sorunları nedeniyle sorunlu olabilir. Bu nedenle, Ubuntu yerel sürümlerini yüklemeniz ve bunun yerine kullanıldıklarından emin olmanız gerekir.

İlk olarak, NPM ile node.js'yi kurun . (alternatif: NVM'yi yüklemek ve node.js yüklemek için kullanabilirsiniz)

Yükledikten sonra, npm komutlarını çalıştırmak büyük olasılıkla başarısız olacaktır: örneğin, npm -vmuhtemelen size şunları verecektir:

: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

Bu, oldukça basit bir çözüme sahip olan bir yol sorunundan kaynaklanmaktadır . (Gibi favori CLI düzenleyicisi kullanarak nano, vim, emacs, catve sed... vb), açmak senin~/.profile

nano ~/.profile

Not: Linux dosyalarını Windows araçlarını kullanarak düzenlemeye ÇALIŞMAYIN . ( Bunu açıklayan kalın kırmızı metinle resmi bağlantı için @ david-c-rankin'in yorumu sayesinde) Terminalde bunun için bir CLI editörü kullanmak istemiyorsanız, nasıl yapılacağına ilişkin bir bağlantı için bu yazının altına bakın çalışan bir GUI almak için.

Şu anda, WSL'deki varsayılan bash PATH değişkeni

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

İlk iki ikili dizinden sonra Windows yolunu enjekte eden. Ne yazık ki, bu, / usr / bin'in Windows npm yüklenmesinden önce kullanılmasına neden olmaz, bu nedenle bunu son $ PATH'dan önce ekleyin:

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

Kaydedin ve ardından ya terminali yeniden yükleyin ya da sadece yol dosyasını kaynak olarak kaydedin

source ~/.profile

Yapı gerekli

Derleme gerektiren veya başka türlü make kullanan herhangi bir şey kullanıyorsanız, bunlara ihtiyacınız olacağı neredeyse garantidir; bu nedenle, node.js'yi kurarken kurmadıysanız, kurun. Her şeyi ayrı ayrı yüklemeyi denemek yerine basitçe build-essential paketini kullanmak çok daha kolaydır .

Ruby FFI'ye dayanan Compass gibi paketlerin bunlar olmadan başarısız olacağını unutmayın. Bir aracı düzgün bir şekilde kurmakta ve çalıştırmakta sorun yaşıyorsanız, gcc'ye sahip olduğunuzdan ve kurulu olduğundan emin olmak, başlamak için iyi bir yer olabilir.

sudo apt-get install -y build-essential

Ubuntu kullanarak Görevleri Çalıştırma

Derleme görevlerini çalıştırmak için VS Code's tasks.json kullanırsanız, varsayılan olarak bu görevlerin Ubuntu yerine Windows alt sistemini kullanarak çalıştırmaya devam edeceğini unutmayın. Bazen istediğiniz şey bu olabilir, ancak grunt-cli'yi Windows'ta değil Ubuntu'da yüklemeyi yeni bitirdiyseniz, muhtemelen değildir.

VS Code, kısa süre önce Görevler'in nasıl çalıştığına dair 2017 Mayıs güncellemesini yaptı ve bu , görev çalıştırıcısını terminal olarak ayarlamasına izin verdi . Bu, görevleri taşımanın açık ara en kolay yoludur.

Basitçe ayarlayın

"runner": "terminal",

senin içinde tasks.jsonve bitirdiniz (varsayarak uygun tüm araçları artık WSL Ubuntu yüklü çalıştırmak için çalışıyoruz var).görüntü açıklamasını buraya girin

Bu çok taşınabilir, ideal olarak WSL'ye sahip olan veya olmayan sistemler arasında veya diğer işletim sistemlerinde değişiklik gerektirmez ve tavsiye edeceğim yöntemdir.

Şu an itibariyle, bu yöntem başka bir TERMINALsekme örneği oluşturur (açılır menüden erişilir). Yine de uygun izleyicileri kurabilirsiniz, ancak bu artık OUTPUTsekmede oturmadığı anlamına gelir .

Eski yöntem, WSL Ubunutu Bash kabuğunu çağırabilir ve bunun içinde OUTPUTgörünmesini sağlayabilir ve ya bash.exe'yi -c bağımsız değişkeniyle çağırmayı veya bir kabuk komut dosyasını kullanmayı içerir. Ne yazık ki o kadar anlambilimsel değil, çünkü bashemrimizi veriyor ve yerine argüman olarak çalıştırmak istediğimiz şeyi iletiyoruz. Bu aynı zamanda diğer sistemlere o kadar hızlı taşınabilir olmadığı anlamına gelir.

VS Kodunu daha önce terminalin kendisi için verdiğiniz konumu C:\\WINDOWS\\Sysnative\\bash.exe, değeri olarak kullanabilirsiniz.commandgörüntü açıklamasını buraya girin

argsDizinin ilk öğesini olarak -cve ikincisini çalıştırmak istediğiniz komut olarak ayarlayın (bu cevabın ikinci yarısına atıfta bulunun ).

Alternatif olarak, burada görüldüğü gibi bir kabuk betiği çalıştırabilirsiniz .

Daha fazla yardımcı bit

İster WSL Bash komut satırından Windows VSCode başlayacak ?

WSL Ubuntu'nuz için bir grafik arayüze sahip olmak ister misiniz ? (Bu kullanım gibi dosyalar için Linux GUI editörü şeyler yapmanızı sağlayacaktır içinde : NPM bölümünde yorumlarınızı / nota bakın, değil düzenlemek onları araçlarını düzenleme Windows'u kullanarak bunu Ubuntu sisteminde kendisi)

Oluşturmak (VS Code Görevlerini WSL için doğru şekilde kurma hakkındaki yukarıdaki bölüme bakın) ve tamamen WSL Ubuntu içinde hata ayıklamak mı istiyorsunuz? (bu, gdb kullanılarak bunun nasıl yapılacağını gösterir, ancak pipeTransportkavram diğer hata ayıklayıcılarla birlikte kullanılabilir) ( bu yanıta atıfta bulunun, ancak ondan önceki yanıt aynı zamanda yararlı olabilecek yerel geri döngü kullanan bir yöntem sağlar)


10
İyi yanıt, Windows uygulamalarını ve araçlarını kullanarak Linux dosyalarını yeni WSL kullanıcılarına değiştirmeyin uyarısını sağlamak da yararlıdır . Bu oldukça şaşırtıcı gelebilir.
David C. Rankin

1
Harika yazı, teşekkürler! Bunu görüp görmediğinizden emin değilsiniz, ancak Windows PATH'in Bash'e eklenmesini önlemek için yapabileceğiniz bir kayıt defteri girdisi de vardır; bu, birçok Windows kullanıcısı için .profile.
Tobias J

3
@ChangQian bunun nedeni 64 bit pencereler yayınlandığında, 32 bit programlar için bir dosya sistemi yeniden yönlendiricisi eklemeleridir, çünkü System32, 64 bit dll / yazılım için ayrılmıştır. Bu, SysWOW64'e erişmek yerine System32'ye erişmeye çalışan 32 bit uygulamalarla sonuçlanır (evet, geriye doğru görünüyor). Sysnative bunu olmamaya zorlar, ancak Explorer gibi 64 bit yazılımlarda * görünmez. 32 bit komut istemini kullanarak bunun bir örneğini görebilirsiniz: C:\Windows\SysWOW64\cmd.exeve çalışıyor dir C:\Windows\Sysnative * Bu, 64 bit VSCode'da çalışır çünkü otomatik olarak çevirmek için kodlanmıştır
taswyn

2
Terminalinizi buna göre ayarladığınızda ubuntu.exe, projenin klasörü yerine kullanıcı klasörünüze gidebilir. Bu nedenle, terminalinizi github.com/Microsoft/WSL/issues/2795'eC:\\Windows\\System32\\wsl.exe göre ayarlamak istiyorsunuz Doğru kurulumun başladığından emin olmak için kullanın . wslconfig /setdefault Ubuntu
Bernhard Döbler

1
Bunu yazdığımda, WSL'nin çok daha kilitlendiği zamandı (dağıtım seçiminden / vb. Önce). En azından Spring Creator sürümüne güncellenen yeni bir pencere yüklemesine sahip bir makinem var, bu yüzden nihayet çeşitli yorumlar başına ne gibi iyileştirmeler yapılabileceğine kısa bir süre sonra gerçek bir göz atacağım ve sorunuza cevap vermeye çalışacağım, @Narnia.
taswyn

4

zsh kullanmak istiyorsanız, ubuntu1804.exe veya ubuntu1604.exe'nin yolunu bulun.

benim durumumda

"terminal.external.windowsExec": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",
"terminal.integrated.shell.windows": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",

Görsel stüdyo kodunun 1.32 sürümünde ve ubuntu ile WSL'de iyi çalıştı. Teşekkürler!
Salvador P.

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.