Ta odpowiedź ma na celu pomóc innym uniknąć spędzania 1-2 godzin na rozwiązywaniu problemów i powolnym znajdowaniu różnych rozwiązań typowych problemów podczas korzystania z WSL dla terminala w VS Code. Nie obejmuje instalowania określonych pakietów, ale raczej typowych, które mogą nie instalować się poprawnie jako zależności podczas instalowania rzeczy, które zależą od ich obecności, i naprawiania powiązanych wspólnych ustawień.
Podsumowanie czynności
- Zainstalowano WSL
- VS Code (lub inne IDE) skonfigurowane dla terminala
- NPM zainstalowany i poprawka ścieżki w .profile (może pomóc z innymi narzędziami)
- zainstalowany build-essential (pomaga we wszystkich narzędziach używających make / gcc / etc)
- Zadania VS Code przy użyciu WSL
- Dodatki
Pierwsze kroki i wymagania
- Musisz mieć zainstalowany WSL . (Co oznacza, że musisz korzystać z 64-bitowego systemu Windows 10 z odpowiednimi aktualizacjami). Postępuj zgodnie z instrukcją instalacji, jeśli nie została jeszcze zainstalowana. Będzie to wymagało kilku ponownych uruchomień.
Konfiguracja terminala VS Code
Albo skrót klawiaturowy CTRL+ ,, albo File
→ Preferences
→Settings
W prawym górnym rogu okna edycji, upewnij się, że pracuje w prawidłowym kontekście dla Ciebie: albo Ustawienia użytkownika lub Ustawienia Workspace .
W pasku wyszukiwania ustawień wpisz terminal.integrated.shell.windows
(lub cokolwiek zajmie wystarczająco dużo czasu)
Znajdź ustawienie w aktualnym pliku ustawień, użyj Edit
(najedź myszką na linię, będzie po lewej stronie: na ekranie dotykowym bez myszy powinieneś być w stanie po prostu dotknąć po lewej stronie linii) i wybraćReplace in Settings
W prawym okienku zmodyfikuj wpis utworzony w zmodyfikowanym pliku json: zamień poprzednie ustawienie na
"C:\\WINDOWS\\Sysnative\\bash.exe"
Inne IDE: IntelliJ
Otwórz Ustawienia / Narzędzia / Terminal i ustaw pole „Ścieżka powłoki” na "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
Uczynienie terminala WSL Ubuntu Bash funkcjonalnym dla programistów
Kiedy używasz CTRL+ `do otwierania terminala, powinieneś mieć teraz terminal bash.
Jeśli uruchamiasz bash.exe po raz pierwszy, możesz zostać zapytany o instalację Ubuntu. Zrób tak. Po zakończeniu instalacji wybierz nazwę użytkownika i hasło, które będą używane w WSL Ubuntu. Nie muszą one pokrywać się z bieżącym kontem systemu Windows i należy pamiętać, że nie zmienią się one po zmianie hasła do konta Windows.
Gdy skończysz, w terminalu pojawi się wiersz polecenia bash.
Zwróć uwagę, że w przeciwieństwie do git-bash w systemie Windows jest to osobne środowisko. Chociaż może być używany do uruchamiania oprogramowania Windows poza nim, będziesz potrzebować odpowiednich pakietów Ubuntu, aby uruchomić je w rzeczywistym terminalu.
Obecnie WSL nie zawiera wszystkiego, czego możesz się spodziewać lub do czego przywykłeś, a niektóre rzeczy mogą kolidować z oprogramowaniem załadowanym w systemie Windows, w oparciu o domyślne ustawienia profilu.
Aktualizacje i git
Uwaga: mam zamiar udokumentować to jako sudo dla osób, które po prostu potrzebują pojedynczych fragmentów tego, ale jedną z opcji na początku jest sudo su
po prostu uruchomienie następujących poleceń bez sudo.
Upewnij się, że Twoje pakiety Ubuntu są aktualne:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
Zainstaluj git:
sudo apt-get install git
Node.js i NPM
Jeśli masz już Node lub NPM załadowane w systemie Windows, uruchomienie ich w Ubuntu może być problematyczne z powodu problemów ze ścieżką. Musisz więc zainstalować natywne wersje Ubuntu i upewnić się, że są używane.
Najpierw zainstaluj node.js z NPM . (alternatywnie: zainstaluj NVM i użyj go do zainstalowania node.js)
Po zainstalowaniu, uruchomienie poleceń npm prawdopodobnie zakończy się niepowodzeniem: na przykład npm -v
prawdopodobnie da ci:
: 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")
Wynika to z problemu ze ścieżką z dość prostym rozwiązaniem . Za pomocą dowolnego edytora CLI (takich jak nano
, vim
, emacs
, cat
i sed
... itd), otwórz~/.profile
nano ~/.profile
Uwaga: NIE próbuj edytować plików Linuksa za pomocą narzędzi Windows . (Dzięki komentarzowi @ david-c-rankin za oficjalny link z wytłuszczonym czerwonym tekstem wyjaśniającym to) Jeśli nie chcesz używać do tego edytora CLI w terminalu, zobacz na dole tego posta link do aby uruchomić GUI.
Obecnie domyślną zmienną bash PATH w WSL jest
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Który wstrzykuje ścieżkę systemu Windows po pierwszych dwóch katalogach binarnych. Niestety, nie powoduje to użycia / usr / bin przed zainstalowaniem npm systemu Windows, więc dodaj to przed końcową $ PATH:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Zapisz, a następnie załaduj ponownie terminal lub po prostu pobierz plik ścieżki
source ~/.profile
Niezbędne do budowania
Jeśli używasz czegokolwiek, co wymaga kompilacji lub w inny sposób używa make, jest prawie pewne, że będziesz potrzebować tych zainstalowanych; więc jeśli nie zainstalowałeś ich podczas instalacji node.js, zrób to. O wiele łatwiej jest po prostu użyć pakietu niezbędnego do kompilacji, zamiast próbować instalować wszystko osobno.
Zwróć uwagę, że pakiety takie jak Compass, które opierają się na Ruby FFI, bez nich zawiodą. Jeśli masz problemy z poprawną instalacją i uruchomieniem narzędzia, dobrym miejscem do rozpoczęcia może być upewnienie się, że masz gcc i zainstalowanie programu.
sudo apt-get install -y build-essential
Uruchamianie zadań przy użyciu Ubuntu
Zwróć uwagę, że jeśli używasz tasks.json VS Code do uruchamiania zadań kompilacji, domyślnie nadal będzie je uruchamiał przy użyciu podsystemu Windows zamiast Ubuntu. Czasami może to być to, czego chcesz, ale jeśli właśnie zakończyłeś instalację grunt-cli w systemie Ubuntu, a nie w systemie Windows, prawdopodobnie tak nie jest.
VS Code niedawno zaktualizował sposób działania zadań z maja 2017 r., Który pozwala ustawić moduł uruchamiający zadania jako terminal . Jest to zdecydowanie najłatwiejszy sposób migracji zadań.
Po prostu ustaw
"runner": "terminal",
w swoim tasks.json
i gotowe (zakładając, że masz wszystkie odpowiednie narzędzia, które próbujesz teraz uruchomić, zainstalowane w WSL Ubuntu).
Jest to bardzo przenośne rozwiązanie, idealnie nie wymagające zmian między systemami, które mają lub nie mają WSL, lub innymi systemami operacyjnymi i jest metodą, którą polecam.
W tej chwili ta metoda TERMINAL
powoduje utworzenie innej instancji karty (dostępnej z menu rozwijanego). Nadal możesz skonfigurować odpowiednich obserwatorów, ale oznacza to, że nie znajduje się już na OUTPUT
karcie.
Stara metoda jest w stanie wywołać powłokę WSL Ubunutu Bash i spowodować jej pojawienie się OUTPUT
, i obejmuje wywołanie bash.exe z argumentem -c lub użycie skryptu powłoki. Niestety nie jest tak semantyczny, ponieważ wydajemy bash
polecenie i przekazujemy mu to, co chcemy zamiast tego uruchomić jako argument. Oznacza to również, że nie można go tak szybko przenieść na inne systemy.
Możesz użyć tej samej lokalizacji, którą podałeś wcześniej VS Code dla samego terminala, C:\\WINDOWS\\Sysnative\\bash.exe
jako wartości dlacommand
Ustaw pierwszy element args
tablicy jako, -c
a drugi jako polecenie, które chcesz uruchomić ( uznanie dla drugiej połowy tej odpowiedzi ).
Alternatywnie możesz zamiast tego uruchomić skrypt powłoki, jak pokazano tutaj .
Dalsze pomocne wskazówki
Chcesz uruchomić VSCode w systemie Windows z wiersza poleceń WSL Bash ?
Chcesz mieć interfejs graficzny dla swojego WSL Ubuntu ? (pozwoli ci to na takie rzeczy, jak użycie edytora GUI Linuksa dla plików w samym systemie Ubuntu: nie edytuj ich za pomocą narzędzi edycyjnych Windows, zobacz komentarze / uwaga w sekcji npm)
Chcesz zbudować (zobacz powyższą część dotyczącą prawidłowego konfigurowania zadań VS Code dla WSL) i debugować całkowicie w WSL Ubuntu ? (to pokazuje, jak to zrobić za pomocą gdb, ale pipeTransport
koncepcja może być używana z innymi debuggerami) (uznanie dla tej odpowiedzi , ale ta przed nią zapewnia również metodę wykorzystującą lokalną pętlę zwrotną, która może okazać się przydatna)