Przenoszenie programowania JavaScript do Bash w systemie Windows
Opublikowany: 2022-03-10Jestem jedną z tych osób, które nie mogą żyć bez terminala Bash. Ten sam fakt utrudnił mi pracę z frontendem w systemie Windows. Pracuję w firmie Microsoft i korzystam z komputera Mac. Dopiero kilka lat temu pojawiła się nowa linia sprzętu Surface, zdałem sobie sprawę: muszę mieć jeden z nich .
Więc mam jeden. A dokładnie Surface Book 2 z systemem Windows 10. Piszę teraz ten artykuł na ten temat. A co z moją słodką, słodką zachętą do Bash? No cóż, oczywiście przyniosłem to ze sobą.
W tym artykule przyjrzę się dogłębnie, jak nowa technologia w systemie Windows 10 umożliwia uruchomienie pełnego terminala Linux w systemie Windows. Pokażę ci również moją niesamowitą konfigurację terminala (która została nazwana przeze mnie „najlepszą w historii”) i jak ty też możesz skonfigurować swoją własną maszynę programistyczną z systemem Windows/Linux.
Jeśli masz ochotę na trochę tego sprzętu Surface, ale nie możesz żyć bez terminala Linux, jesteś we właściwym miejscu.
Uwaga : w momencie pisania tego tekstu wiele elementów w tym artykule będzie wymagało użycia lub przełączenia się na kompilacje „podgląd” lub „wtajemniczonych” różnych elementów, w tym systemu Windows. Większość z tych rzeczy pojawi się w głównej wersji systemu Windows w przyszłości.
Podsystem Windows dla systemu Linux (WSL)
Podsystem Windows dla systemu Linux lub „WSL” umożliwia uruchamianie systemu Linux w systemie Windows. Ale czym właściwie jest ta szalona nauka?
WSL, w swoim obecnym wcieleniu, jest warstwą translacji, która konwertuje wywołania systemowe Linuksa na wywołania systemowe Windows. Linux działa na szczycie WSL. Oznacza to, że aby zainstalować Linuksa w systemie Windows, musisz zrobić trzy rzeczy:
- Włącz WSL,
- Zainstaluj Linuksa,
- Na liście zawsze umieszczaj trzy pozycje.
Jak się okazuje, ta warstwa tłumaczeniowa jest odrobinę wolniejsza — trochę tak, jak ja staram się zapamiętać, czy potrzebuję splice
lub slice
. Jest to szczególnie ważne, gdy WSL odczytuje i zapisuje w systemie plików. To duży problem dla twórców stron internetowych, ponieważ każda poprawna npm install
skopiuje tysiące plików na twoją maszynę. To znaczy, nie wiem jak ty, ale nie zamierzam lewicować własnych strun.
Wersja 2 WSL to inna historia. Jest znacznie szybszy niż bieżąca wersja, ponieważ wykorzystuje rdzeń wirtualizacji w systemie Windows zamiast korzystać z warstwy tłumaczeniowej. Kiedy mówię, że jest „znacznie szybszy”, mam na myśli sposób, o wiele szybszy. Tak szybko jak ja w Googlingu „splice vs slice”.
Z tego powodu pokażę, jak zainstalować WSL 2. W chwili pisania tego tekstu będzie to wymagało od ciebie posiadania wersji „Insider” systemu Windows.
Po pierwsze: postępuj zgodnie z tym krótkim przewodnikiem, aby włączyć WSL w systemie Windows 10 i sprawdź numer wersji systemu Windows.
Po zainstalowaniu naciśnij klawisz Windows i wpisz „windows insider”. Następnie wybierz „Ustawienia niejawnego programu testów systemu Windows”.
Będziesz mieć kilka różnych opcji, na którym „pierścieniu” chcesz się znaleźć. Wiele osób, które znam, jest na szybkim ringu. Ale jestem ostrożnym facetem. Kiedy byłem dzieckiem, zjeżdżałem zjeżdżalnią na placu zabaw na brzuchu trzymając się boków. Dlatego pozostaję na wolnym ringu. Pracuję na nim od kilku miesięcy i uważam, że nie jest on bardziej destrukcyjny ani niestabilny niż zwykły system Windows.
To dobra opcja, jeśli chcesz WSL 2, ale nie chcesz umrzeć na zjeżdżalni.
Uwaga : Po opublikowaniu tego artykułu dowiedziałem się, że WSL 2 w rzeczywistości nie działa na wolnym pierścieniu. Aby go zdobyć, musisz być na szybkim ringu. Musiałem być na szybkim ringu w pewnym momencie pisania tego artykułu. Tak szybko dzwoni. Powodzenia na zjeżdżalni!
Następnie musisz włączyć funkcję „Platforma maszyny wirtualnej” w systemie Windows, która jest wymagana przez WSL w wersji 2. Aby przejść do tego ekranu, naciśnij klawisz Windows i wpisz „funkcje systemu Windows”. Następnie wybierz "Włącz lub wyłącz funkcje systemu Windows". Wybierz „Platforma maszyny wirtualnej”. Opcja „Podsystem Windows dla systemu Linux” powinna już być włączona.
Teraz, gdy WSL jest włączone, możesz zainstalować Linuksa. Robisz to, jak na ironię, bezpośrednio ze Sklepu Windows. Dopiero w 2019 roku sugerowałbym „zainstalowanie Linuksa ze sklepu Windows”.
Do wyboru jest kilka różnych dystrybucji, ale Ubuntu będzie najbardziej obsługiwany we wszystkich narzędziach, które skonfigurujemy później — w tym VS Code. Wszystkie instrukcje, które pochodzą z tego miejsca, zakładają instalację Ubuntu. Jeśli zainstalujesz inną dystrybucję, wszystkie zakłady zostaną anulowane.
Wyszukaj „Ubuntu” w Sklepie Windows. Do wyboru będą trzy: Ubuntu, Ubuntu 18.04 i Ubuntu 16.04. Ubuntu naprawdę lubi ten numer wersji pomocniczej 04, prawda?
Dystrybucja „Ubuntu” (pierwsza na tym zrzucie ekranu) to „wersja meta”, a raczej symbol zastępczy, który po prostu wskazuje na najnowszą wersję. W tej chwili jest to 18.04.
Poszedłem z wersją meta, ponieważ później pokażę ci, jak przeglądać system plików Linuksa za pomocą Eksploratora Windows i jest trochę bałaganu mieć „Ubuntu 18.04” jako nazwę dysku w porównaniu z samym „Ubuntu”.
Ta instalacja jest dość szybka w zależności od połączenia internetowego. To tylko około 215 megabajtów, ale jestem na połączeniu gigabitowym tutaj i skąd możesz wiedzieć, czy ktoś jest na połączeniu gigabitowym? Nie martw się, powiedzą ci.
Po zainstalowaniu będziesz mieć teraz aplikację „Ubuntu” w swoim menu startowym.
Jeśli to klikniesz, otrzymasz terminal Bash!
Poświęć chwilę na rozkoszowanie się cudem technologii.
Domyślnie korzystasz z WSL w wersji 1. Aby uaktualnić do wersji 2, musisz otworzyć terminal PowerShell i uruchomić polecenie.
Naciśnij klawisz „Windows” i wpisz „Powershell”.
W terminalu programu PowerShell możesz sprawdzić, którą wersję WSL masz, wykonując wsl --list --verbose
.
Jeśli pokazujesz wersję 1, musisz wykonać --set-version
i określić nazwę instancji (Ubuntu) oraz żądaną wersję (2).
wsl --set-version Ubuntu 2
To trochę potrwa, w zależności od tego, ile mięsa ma twoja maszyna. Mój wziął „kilka minut” dawania lub brania. Kiedy to zrobisz, będziesz w najnowszej i najlepszej wersji WSL.
To twój mózg w systemie Linux… w systemie Windows.
Linux to nie Windows. WSL nie jest monitem bash w systemie operacyjnym Windows. Jest to pełny system operacyjny z własną strukturą folderów i zainstalowanymi aplikacjami. Jeśli zainstalujesz Node za pomocą instalatora Windows, wpisanie node
w Linuksie zakończy się niepowodzeniem, ponieważ Node nie jest zainstalowany w Linuksie. Jest zainstalowany w systemie Windows.
Prawdziwa magia WSL polega jednak na tym, że bezproblemowo łączy systemy Windows i Linux, dzięki czemu są one widoczne na twoim komputerze jako jeden system plików.
Nawigacja w plikach i folderach
Domyślnie terminal Ubuntu przenosi Cię do katalogu domowego Linuksa (lub /home/your-user-name
). Możesz przejść na stronę Windows, przechodząc do /mnt/c
.
Zwróć uwagę, że niektóre uprawnienia są tutaj odmawiane. Musiałbym kliknąć prawym przyciskiem myszy ikonę Ubuntu i kliknąć „Uruchom jako administrator”, aby uzyskać dostęp do tych plików. W ten sposób system Windows podwyższa uprawnienia. W systemie Windows nie ma sudo.
Uruchamianie aplikacji
Możesz uruchomić dowolną aplikację Windows z terminala Ubuntu. Na przykład mogę otworzyć Eksploratora Windows z terminala Unbuntu.
Działa to również w odwrotnej kolejności. Możesz uruchomić dowolną aplikację zainstalowaną po stronie Linuksa. Tutaj uruchamiam „fortunę” zainstalowaną w Linuksie z wiersza poleceń Windows. (Ponieważ nie jest to poprawna instalacja Linuksa bez przypadkowych, bezsensownych fortun.)
Dwa różne systemy operacyjne. Dwa różne systemy plików. Dwa różne zestawy zainstalowanych aplikacji. Widzisz, jak to może być mylące?
Aby wszystko było proste, zalecam instalowanie wszystkich plików programistycznych i narzędzi JavaScript po stronie Linuksa. To powiedziawszy, możliwość poruszania się między systemami Windows i Linux oraz uzyskiwania dostępu do plików z obu systemów to podstawowa magia WSL. Nie zapomnij o tym, ponieważ to właśnie sprawia, że cała ta konfiguracja jest lepsza niż tylko standardowe urządzenie z Linuksem.
Konfigurowanie środowiska programistycznego
Od tego momentu przedstawię wam listę poglądów na temat tego, co uważam za zabójczą konfigurację Linuksa w systemie Windows. Pamiętaj tylko: moje opinie są właśnie takie. Opinie . Tak się składa, że tak jak wszystkie moje opinie, są one w 100% poprawne.
Uzyskanie lepszego terminala
Tak, masz terminal po zainstalowaniu Ubuntu. W rzeczywistości jest to konsola Windows podłączona do twojej dystrybucji Linuksa. To nie jest zła konsola. Możesz zmienić jego rozmiar, włączyć kopiowanie/wklejanie (w ustawieniach). Ale nie możesz robić takich rzeczy jak zakładki lub otwierać nowe okna. Podobnie jak wiele osób używa zastępczych programów terminalowych na Macu (ja używam Hyper), istnieją również inne opcje dla systemu Windows. Lista Awesome WSL na Github zawiera dość wyczerpującą listę.
To wszystko są dobre emulatory, ale jest nowa opcja tworzona przez ludzi, którzy dość dobrze znają system Windows.
Microsoft pracuje nad nową aplikacją o nazwie „Windows Terminal”.
Terminal Windows można zainstalować ze Sklepu Windows i jest on obecnie w trybie podglądu. Używam go od dłuższego czasu i ma wystarczająco dużo funkcji i jest wystarczająco stabilny, abym mógł go z pełnym poparciem.
Nowy terminal Windows oferuje pełny interfejs kart, kopiowanie/wklejanie, wiele profili, przezroczyste tła, obrazy tła — nawet przezroczyste obrazy tła. To dobry dzień, jeśli chcesz dostosować swój terminal, a ja przybyłem, aby wygrać ten wyścig.
Oto mój obecny terminal. Omówimy tutaj niektóre z ważnych poprawek.
Terminal Windows jest dość konfigurowalny. Kliknięcie strzałki „ ⌄ ” w lewym górnym rogu (obok znaku „ + ”) daje dostęp do „Ustawienia”. Spowoduje to otwarcie pliku JSON.
Opraw Kopiuj/Wklej
Na górze pliku znajdują się wszystkie powiązania klawiszy. Pierwszą rzeczą, którą zrobiłem, było mapowanie „kopiuj” do Ctrl + C i wklejanie do Ctrl + V . Jak inaczej mam zamiar skopiować i wkleić polecenia z przepełnienia stosu, których nie rozumiem?
{ "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },
Problem polega na tym, że Ctrl + C jest już zmapowane na SIGINT lub polecenie przerwania/zabicia w systemie Linux. Istnieje wiele terminali dla systemu Windows, które obsługują to, mapując odpowiednio Kopiuj/Wklej na Ctrl + Shift + C i Ctrl + Shift + V. Problem polega na tym, że kopiuj/wklej to Ctrl + C / Ctrl + V w każdym innym miejscu w systemie Windows. Po prostu naciskałem Ctrl + C w terminalu w kółko, próbując kopiować rzeczy. Nie mogłem przestać tego robić.
Terminal Windows obsługuje to inaczej. Jeśli masz podświetlony tekst i naciśniesz Ctrl + C , skopiuje tekst. Jeśli jest uruchomiony proces, nadal wysyła polecenie SIGINT i przerywa go. Oznacza to, że możesz bezpiecznie mapować Ctrl + C / Ctrl + V na kopiowanie/wklejanie w terminalu Windows i nie będzie to zakłócać możliwości przerywania procesów.
Kto by pomyślał, że kopiowanie/wklejanie może spowodować tyle bólu serca?
Zmień domyślny profil
Profil domyślny pojawia się po otwarciu nowej karty. Domyślnie jest to Powershell. Będziesz chciał przewinąć w dół i znaleźć profil Linuksa. To jest ten, który otwiera wsl.exe -d Ubuntu
. Skopiuj jego identyfikator GUID i wklej go do ustawienia defaultProfile
.
Przeniosłem te dwa ustawienia, aby znajdowały się tuż obok siebie, aby łatwiej było je zobaczyć:
Ustaw tło
Podoba mi się, że moje tło ma ciemny, jednolity kolor z płaskim logo w prawym rogu. Robię to, ponieważ chcę, aby logo było jasne i widoczne, ale nie przeszkadzało w tekście. Ten zrobiłem sam, ale w Simple Desktops jest świetna kolekcja płaskich obrazów.
Tło jest ustawiane za pomocą właściwości backgroundImage
:
"backgroundImage": "c:/Users/YourUserName/Pictures/earth.png"
Zauważysz również ustawienie o nazwie „akryl”. To umożliwia dostosowanie krycia tła. Jeśli masz jednolity kolor tła, jest to całkiem proste.
"background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5
Możesz to zrobić również z obrazem tła, łącząc ustawienie arcylicOpacity
z backgroundImageOpacity
:
"backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5
W moim motywie przezroczystość sprawia, że wszystko wygląda na wyciszone, więc useAcrylic
na false
.
Zmień czcionkę
Zespół tworzący Terminal Windows pracuje również nad nową czcionką o nazwie „Cascadia Code”. Nie jest dostępny w momencie pisania tego tekstu, więc zamiast tego otrzymujesz domyślną czcionkę systemu Windows.
Domyślną czcionką w terminalu Windows jest "Konsola". Jest to ta sama czcionka, której używa wiersz poleceń systemu Windows. Jeśli chcesz tego prawdziwego uczucia Ubuntu, Chris Hoffman wskazuje, w jaki sposób możesz zainstalować oficjalną czcionkę Ubuntu Mono.
Oto przed i po, dzięki czemu możesz zobaczyć różnicę:
"fontFace": "Ubuntu Mono"
Wyglądają dość podobnie; główna różnica polega na rozstawieniu Ubuntu Mono, co sprawia, że terminal jest nieco ciaśniejszy i czystszy.
Schematy kolorów
Wszystkie schematy kolorów znajdują się na dole pliku ustawień. Skopiowałem schemat kolorów „Campbell” jako linię bazową. Staram się dopasowywać kolory do ich nazw, ale nie boję się też zbuntować. Zmapuję „#ffffff” na „niebieski” — nawet mnie to nie obchodzi.
Jeśli podoba Ci się ten konkretny schemat, który nazwałem „Ziemia”, ułożyłem to w całość, dzięki czemu nie musisz ręcznie kopiować całego tego bałaganu ze zrzutu ekranu.
Uwaga : podglądy kolorów są dostępne dzięki rozszerzeniu „Podświetlenie kolorów” dla VS Code.
Zmień domyślny katalog początkowy
Domyślnie profil WSL przenosi Cię do katalogu domowego po stronie Windows. W oparciu o konfigurację, którą zalecam w tym artykule, lepiej byłoby zamiast tego umieścić go w folderze home
systemu Linux. Aby to zrobić, zmień ustawienie startingDirectory
w swoim profilu „Ubuntu”:
"startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"
Zwróć uwagę na ścieżkę tam. Możesz użyć tej ścieżki (bez dodatkowych ukośników ucieczki), aby uzyskać dostęp do WSL z wiersza poleceń systemu Windows.
Zainstaluj Zsh/Oh-My-Zsh
Jeśli nigdy wcześniej nie używałeś Zsh i Oh-My-Zsh, czeka Cię prawdziwa uczta. Zsh (lub „Z Shell”) to zastępcza powłoka dla systemu Linux. Rozszerza podstawowe możliwości Bash, w tym implikowane przełączanie katalogów (nie trzeba wpisywać cd
), obsługę lepszych motywów, lepsze monity i wiele więcej.
Aby zainstalować Zsh, pobierz go za pomocą menedżera pakietów apt, który wychodzi z pudełka z instalacją Linuksa:
sudo apt install zsh
Zainstaluj oh-my-zsh za pomocą curl. Oh-my-zsh to zestaw konfiguracji dla zsh, które jeszcze bardziej poprawiają działanie powłoki dzięki wtyczkom, motywom i niezliczonej liczbie skrótów klawiaturowych.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Następnie zapyta, czy chcesz zmienić domyślną powłokę na Zsh. Tak, więc odpowiedz twierdząco, a teraz działasz z Zsh i Oh-My-Zsh.
Zauważysz, że monit jest teraz znacznie czystszy. Możesz zmienić wygląd tego monitu, zmieniając motyw w pliku ~/.zshrc
.
Otwórz go za pomocą nano
, co jest trochę jak VIM, ale możesz edytować rzeczy i wyjść, kiedy zajdzie taka potrzeba.
nano ~/.zshrc
Zmień linię, która ustawia motyw. Nad nim znajduje się adres URL z całą listą motywów. Myślę, że ta „w chmurze” jest fajna. I słodki.
Aby pobrać zmiany w .zshrc
, musisz go pozyskać:
source ~/.zshrc
Uwaga : jeśli wybierzesz motyw taki jak „agnoster”, który wymaga glifów, będziesz potrzebować wersji Ubuntu Mono z zasilaniem, która ma… glify. W przeciwnym razie twój terminal będzie po prostu pełen dziwnych postaci, jakbyś zmiażdżył twarz na klawiaturze. Nerd Fonts oferuje taki, który wydaje się działać całkiem dobrze.
Teraz możesz robić takie rzeczy, jak zmiana katalogów, po prostu wprowadzając nazwę katalogu. cd
nie jest wymagana. Chcesz wrócić do katalogu? Po prostu zrób ..
Nie musisz nawet wpisywać całej nazwy katalogu, wystarczy wpisać kilka pierwszych liter i nacisnąć tabulator. Zsh wyświetli listę wszystkich plików/katalogów, które pasują do Twojego wyszukiwania i możesz je przeglądać.
Instalowanie węzła
Jako programista sieciowy prawdopodobnie będziesz chciał zainstalować Node. Przypuszczam, że nie musisz instalować Node, aby tworzyć strony internetowe, ale na pewno tak jest w 2019 roku!
Twoim pierwszym odruchem może być zainstalowanie node z apt
, co możesz zrobić, ale żałujesz tego z dwóch powodów:
- Wersja Node na apt jest żałośnie przestarzała;
- Powinieneś zainstalować Node z menedżerem wersji, aby nie napotkać problemów z uprawnieniami.
Najlepszym sposobem rozwiązania obu tych problemów jest zainstalowanie nvm (Node Version Manager). Ponieważ zainstalowałeś zsh
, możesz po prostu dodać wtyczkę nvm do pliku zshrc, a zsh zajmie się resztą.
Najpierw zainstaluj wtyczkę, klonując w repozytorium zsh-nvm
. (Nie martw się, Git jest standardowo instalowany w systemie Ubuntu.)
git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm
Następnie dodaj go jako wtyczkę w pliku ~/.zshrc
.
`nano ~/.zshrc` plugins (zsh-nvm git)
Pamiętaj, aby ponownie pobrać plik zshrc za pomocą source ~/.zshrc
, a zobaczysz instalowany nvm.
Teraz możesz zainstalować node z nvm. Ułatwia instalację wielu obok siebie wersji węzła i bezproblemowe przełączanie się między nimi. Ponadto brak błędów uprawnień podczas instalacji globalnych npm!
nvm install --lts
Polecam to zamiast standardowej instalacji nvm, ponieważ wtyczka daje możliwość łatwej aktualizacji nvm. Jest to trochę uciążliwe przy standardowej instalacji „zwinięcia”. To jedno polecenie z wtyczką.
nvm upgrade
Korzystaj z automatycznych sugestii
Jedną z moich ulubionych wtyczek do zsh jest zsh-autosuggestions. Zapamiętuje rzeczy, które wpisałeś wcześniej w terminalu, a następnie rozpoznaje je, gdy zaczniesz je ponownie wpisywać, a także „automatycznie sugeruje” linię, której możesz potrzebować. Ta wtyczka przydała się więcej razy, niż pamiętam — szczególnie jeśli chodzi o długie polecenia CLI, których używałem w przeszłości, ale których nigdy nie pamiętam.
Sklonuj repozytorium do folderu rozszerzeń zsh:
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
Następnie dodaj go do swoich wtyczek zsh i pobierz plik zshrc:
nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc
Wtyczka odczytuje historię zsh, więc zacznij wpisywać polecenie, które wpisałeś wcześniej i obserwuj magię. Spróbuj wpisać pierwszą część tego długiego polecenia klonowania powyżej.
Jeśli naciśniesz ↹ , automatycznie uzupełni polecenie. Jeśli będziesz naciskać ↹ , przejdziesz kolejno przez dowolne polecenia w Twojej historii, które mogą być dopasowane.
Ważne skróty klawiaturowe
Jest kilka skrótów terminalowych, z których cały czas korzystam. Odnajduję to we wszystkich moich narzędziach — w tym w VS Code. Próba nauczenia się wszystkich skrótów to strata czasu, ponieważ nie użyjesz ich na tyle, aby je zapamiętać.
Oto kilka, z których regularnie korzystam:
Skrót do terminala | Co to robi? |
---|---|
Ctrl + L | Spowoduje to wyczyszczenie terminala i powrót na górę. To odpowiednik wpisania „wyczyść”. |
Ctrl + U | To czyści tylko bieżącą linię. |
Ctrl + A | Przesyła kursor na początek wiersza poleceń. |
Ctrl + E | Przejdź na koniec wiersza. |
Ctrl + K | Usuń wszystkie znaki za kursorem. |
Otóż to! Wszystko inne prawdopodobnie się nauczyłem, a potem zapomniałem, ponieważ nigdy nie ma to żadnego pożytku.
Konfiguracja Git (Hub/Lab/Whatevs)
Git jest dostępny na Ubuntu, więc nie jest wymagana instalacja. Możesz postępować zgodnie z instrukcjami wybranego dostawcy hostingu kontroli źródła, aby utworzyć i uruchomić klucze ssh.
Zwróć uwagę, że w instrukcjach Github mówi ci, aby użyć narzędzia „kopiuj”, aby skopiować klucz ssh. Ubuntu ma polecenie „xcopy”, ale tutaj nie zadziała, ponieważ nie ma współdziałania między Linuksem a Windowsem w zakresie schowka.
Zamiast tego możesz po prostu użyć pliku wykonywalnego schowka systemu Windows i wywołać go bezpośrednio z terminala. Musisz najpierw pobrać tekst za pomocą cat
, a następnie przesłać go do schowka Windows.
cat ~/.ssh/id_rsa.pub | clip.exe
Dokumentacja Github każe się upewnić, że ssh-agent
jest uruchomiony. To nie jest. Zobaczysz to, gdy spróbujesz dodać swój klucz do agenta:
Możesz uruchomić agenta, ale przy następnym ponownym uruchomieniu systemu Windows lub zatrzymaniu WSL, będziesz musiał uruchomić go ponownie. Dzieje się tak, ponieważ w WSL nie ma systemu inicjowania. Nie ma żadnego systemd
ani innego procesu, który uruchamiałby wszystkie Twoje usługi po uruchomieniu WSL. WSL jest nadal w wersji zapoznawczej, a zespół pracuje nad rozwiązaniem tego problemu.
W międzyczasie możesz wierzyć lub nie, ale do tego też jest wtyczka zsh. Nazywa się ssh-agent
i jest instalowany z oh-my-zsh, więc wszystko, co musisz zrobić, to odwołać się do niego w pliku .zshrc
.
zsh-nvm zsh-autosuggestions ssh-agent git
Spowoduje to automatyczne uruchomienie ssh-agent, jeśli nie jest on uruchomiony przy pierwszym uruchomieniu WSL. Minusem jest to, że będzie prosić o hasło za każdym razem, gdy WSL zostanie uruchomiony od nowa. Oznacza to zasadniczo za każdym razem, gdy ponownie uruchamiasz komputer.
Kod VS i WSL
WSL nie ma GUI, więc nie można zainstalować narzędzia wizualnego, takiego jak VS Code. To musi być zainstalowane po stronie Windows. Stanowi to problem, ponieważ masz program działający po stronie Windows, który uzyskuje dostęp do plików po stronie Linuksa, co może skutkować wszystkimi dziwactwami i problemami z „odmową dostępu”. Jako ogólna zasada Microsoft zaleca, aby nie zmieniać plików po stronie WSL za pomocą programów Windows.
Aby rozwiązać ten problem, istnieje rozszerzenie dla VS Code o nazwie „Remote WSL”. To rozszerzenie zostało stworzone przez Microsoft i umożliwia programowanie w ramach WSL, ale z wnętrza VS Code.
Po zainstalowaniu rozszerzenia możesz dołączyć VS Code bezpośrednio po stronie Ubuntu, otwierając paletę poleceń (
To otwiera nowe wystąpienie VS Code, które pozwala pracować tak, jakbyś był w pełni po stronie Linuksa. Wykonanie „Plik / Otwórz” przegląda system plików Ubuntu zamiast systemu Windows.
Zintegrowany terminal w VS Code otwiera pięknie dostosowaną konfigurację zsh. Wszystko „działa” tak, jak powinno, gdy masz zainstalowane rozszerzenie Remote WSL.
Jeśli otworzysz kod z terminala za pomocą code .
, VS Code automatycznie wykryje, że został otwarty z WSL i automatycznie dołączy zdalne rozszerzenie WSL.
Rozszerzenia kodu VS ze zdalnym WSL
Rozszerzenie Remote WSL dla VS Code działa, konfigurując mały serwer po stronie systemu Linux, a następnie łącząc się z tym z VS Code po stronie systemu Windows. W takim przypadku rozszerzenia, które zainstalowałeś w VS Code, nie pojawią się automatycznie po otwarciu projektu z WSL.
Na przykład mam otwarty projekt Vue w VS Code. Mimo że mam zainstalowane wszystkie odpowiednie rozszerzenia Vue do podświetlania składni, formatowania i tym podobnych, VS Code zachowuje się tak, jakby nigdy wcześniej nie widział pliku .vue
.
Wszystkie zainstalowane rozszerzenia można włączyć w WSL. Po prostu znajdź żądane rozszerzenie w WSL i kliknij przycisk „Zainstaluj w WSL”.
Wszystkie rozszerzenia zainstalowane w WSL pojawią się we własnej sekcji w widoku Eksploratora rozszerzeń. Jeśli masz wiele rozszerzeń, instalowanie każdego z nich z osobna może być nieco denerwujące. Jeśli chcesz po prostu zainstalować każde rozszerzenie, które masz w WSL, kliknij małą ikonę pobierania w chmurze u góry sekcji „Lokalne — zainstalowane”.
Jak skonfigurować katalogi deweloperów
Jest to już artykuł z opiniami, więc tutaj nie pytałeś o to, jak moim zdaniem powinieneś ustrukturyzować swoje projekty w swoim systemie plików.
Wszystkie moje projekty trzymam po stronie Linuksa. Nie umieszczam swoich projektów w „Moich dokumentach”, a potem próbuję pracować z nimi w WSL. Mój mózg sobie z tym nie poradzi.
Tworzę folder o nazwie /dev
, który umieszczam w katalogu głównym mojego folderu /home
w systemie Linux. Wewnątrz tego folderu tworzę kolejny, który ma taką samą nazwę jak moje repozytorium Github: /burkeholland
. W tym folderze idą wszystkie moje projekty — nawet te, które nie są przesyłane na Github.
Jeśli sklonuję repozytorium z innego konta Github (np. „microsoft”), utworzę nowy folder w „dev” o nazwie /microsoft
. Następnie klonuję repozytorium do znajdującego się w nim folderu.
Zasadniczo naśladuję tę samą strukturę, co kontrola źródła na moim komputerze lokalnym. O wiele łatwiej jest mi wytłumaczyć, gdzie znajdują się projekty i do jakich repozytoriów są one dołączone, tylko ze względu na ich lokalizację. To proste, ale bardzo skutecznie pomaga mi zorganizować wszystko. I potrzebuję wszelkiej pomocy, jaką mogę uzyskać.
Przeglądanie plików w Eksploratorze Windows
Są chwile, kiedy trzeba dostać się do pliku w Linuksie od strony Windows. Najpiękniejszą rzeczą w WSL jest to, że nadal możesz to zrobić.
Jednym ze sposobów jest dostęp do WSL, tak jak do zmapowanego dysku. Uzyskaj do niego dostęp za pomocą \\wsl$
bezpośrednio z paska eksploratora:
\\wsl$
Możesz to zrobić z wielu różnych powodów. Na przykład właśnie dzisiaj potrzebowałem rozszerzenia do Chrome, którego nie ma w sklepie internetowym. Więc sklonowałem repozytorium w WSL, a następnie przeszedłem do niego jako „rozpakowane rozszerzenie” i załadowałem je do Edge.
Jedną z rzeczy, które robię z pewną częstotliwością w Linuksie, jest otwieranie katalogu zawierającego plik bezpośrednio z terminala. Możesz to zrobić również w WSL, bezpośrednio wywołując explorer.exe
. Na przykład to polecenie otwiera bieżący katalog w Eksploratorze Windows.
$ explorer.exe .
To polecenie jest jednak trochę kłopotliwe. W systemie Linux jest po prostu open .
. Możemy stworzyć tę samą magię, tworząc alias w ~/.zshrc
.
alias open="explorer.exe"
Doker
Kiedy powiedziałem, że wszystkie narzędzia powinny być po stronie Linuksa, miałem to na myśli. Obejmuje to Dockera.
To tutaj guma naprawdę zaczyna stykać się z drogą. Potrzebujemy tutaj Dockera działającego w systemie Linux działającym w systemie Windows. To trochę jak rosyjska lalka gniazdująca, kiedy piszesz to w poście na blogu. W rzeczywistości jest to całkiem proste.
Potrzebna będzie poprawna wersja Dockera dla systemu Windows. W chwili pisania tego tekstu jest to WSL 2 Tech Preview.
Po uruchomieniu instalator zapyta, czy chcesz używać kontenerów Windows zamiast kontenerów Linux. Zdecydowanie tak. W przeciwnym razie nie będziesz mieć możliwości uruchomienia Dockera w WSL.
Możesz teraz włączyć Docker w WSL, klikając element w zasobniku systemowym i wybierając „WSL 2 Tech Preview”:
Po uruchomieniu usługi możesz używać Dockera w ramach WSL tak, jak tego oczekujesz. Uruchamianie Dockera w WSL zapewnia całkiem duży wzrost wydajności, a także zwiększenie czasu zimnego startu w kontenerach.
Czy mogę również zalecić zainstalowanie rozszerzenia Docker dla VS Code? Umieszcza interfejs wizualny w konfiguracji platformy Docker i ogólnie ułatwia pracę z platformą Docker, ponieważ nie musisz pamiętać wszystkich tych flag i opcji wiersza polecenia.
Uzyskaj więcej Bash w systemie Windows
W tym momencie powinieneś dowiedzieć się, jak umieścić Bash w systemie Windows i jak to działa, gdy już go tam znajdziesz. Możesz dostosowywać swój terminal w nieskończoność i jest wiele różnych programów rad, które możesz dodać, aby robić takie rzeczy, jak automatyczne ustawianie zmiennych PATH, tworzenie aliasów, umieszczanie krowy ASCII w terminalu i wiele więcej.
Uruchamianie Bash w systemie Windows otworzyło dla mnie zupełnie nowy wszechświat. Potrafię łączyć Windows, który kocham za stronę produktywności, oraz Linux, na którym polegam jako programista. Co najlepsze, mogę teraz tworzyć aplikacje na obie platformy na jednej maszynie.
Dalsza lektura
Możesz przeczytać więcej o Bash w systemie Windows tutaj:
- „Instrukcja instalacji podsystemu Windows dla systemu Linux w systemie Windows 10”, Microsoft Docs
- „Jak zainstalować i używać powłoki Bash w systemie Windows 10”, Chris Hoffman, How-To Geek
- „Udostępnianie SSH za pomocą WSL”, Drew Wilson
- „Zaszalej z podsystemem okien dla systemu Linux”, Brian Ketelsen
- „Wszystko, co możesz zrobić z nową powłoką Bash w systemie Windows 10”, Chris Hoffman, How-To Geek
Specjalne podziękowania dla Briana Ketelsena, Matta Hernandeza, Richa Turnera i Craiga Loewena za ich cierpliwość, pomoc i wskazówki dotyczące tego artykułu.