- Over de auteur
- Windows Subsystem For Linux (WSL)
- Het is uw brein op Linux… op Windows.
- File And Folder Navigation
- Toepassingen starten
- Het opzetten van je ontwikkelomgeving
- Het krijgen van een betere Terminal
- Bind Kopiëren/Plakken
- Het standaardprofiel wijzigen
- De achtergrond instellen
- Verander het lettertype
- Kleurenschema’s
- Change The Default Starting Directory
- Installeer Zsh/Oh-My-Zsh
- Installeren van Node
- Gebruik automatische suggesties
- Belangrijke sneltoetsen
- Git configureren(Hub/Lab/Whatevs)
- VS Code en de WSL
- VS Code Extensions With Remote WSL
- Hoe je Dev-mappen instelt
- Browsing Files From Windows Explorer
- Docker
- Get More Bash On Windows
- Verder lezen
Over de auteur
Burke Holland is een front-end ontwikkelaar die in Nashville, TN woont; de grootste stad ter wereld. Hij geniet veel van JavaScript omdat het de enige manier is waarop hij …Meer overBurke↬
- 24 min lezen
- JavaScript
- Opgeslagen voor offline lezen
- Delen op Twitter, LinkedIn
Ik ben een van die mensen die niet zonder hun Bash-terminal kunnen leven. Dit feit alleen al heeft het voor mij moeilijk gemaakt om frontend werk te doen op Windows. Ik werk bij Microsoft en ik zit op een Mac. Pas toen de nieuwe Surface-hardwarelijn een paar jaar geleden uitkwam, realiseerde ik me: Ik moet er zo een hebben.
Dus ik heb er een. Een Surface Book 2 met Windows 10 om precies te zijn. Ik ben dit artikel er nu op aan het schrijven. En hoe zit het met mijn lieve, lieve Bash prompt? Nou, ik heb het natuurlijk meegenomen.
In dit artikel ga ik een diepgaande blik werpen op hoe nieuwe technologie in Windows 10 je in staat stelt om een volledige Linux-terminal op Windows uit te voeren. Ik zal je ook mijn verbazingwekkende terminalopstelling laten zien (die door “mij” werd uitgeroepen tot “beste ooit”) en hoe ook jij je eigen Windows / Linux-ontwikkelingsmachine kunt opzetten.
Als je hebt gesnakt naar wat van die Surface-hardware, maar niet zonder een Linux-terminal kunt leven, ben je hier op de juiste plaats.
Note: Op het moment van schrijven vereisen veel van de items in dit artikel dat u “preview” of “insiders” builds van verschillende items gebruikt of overschakelt, inclusief Windows. De meeste van deze dingen zullen op een gegeven moment in de toekomst in de hoofd build van Windows zitten.
Windows Subsystem For Linux (WSL)
Het Windows Subsystem for Linux, of, “WSL” is wat u in staat stelt om Linux onder Windows te draaien. Maar wat is deze gekke wetenschap nu precies?
Het WSL, in zijn huidige vorm, is een vertaallaag die Linux system calls omzet in Windows system calls. Linux draait boven op de WSL. Dat betekent dat je, om Linux op Windows te krijgen, drie dingen moet doen:
- De WSL inschakelen,
- Linux installeren,
- Altijd drie items in een lijst opnemen.
Zoals blijkt, is die translatielaag een beetje aan de trage kant – een beetje zoals ik die probeert te onthouden of ik splice
of slice
nodig heb. Dit is vooral waar wanneer de WSL leest en schrijft naar het bestandssysteem. Dat is een groot probleem voor webontwikkelaars, omdat elke npm install
duizenden bestanden naar je machine kopieert. Ik bedoel, ik weet niet hoe het met jou zit, maar ik ga mijn eigen strings niet left-padden.
Versie 2 van de WSL is een ander verhaal. Het is aanzienlijk sneller dan de huidige versie omdat het gebruik maakt van een virtualisatie kern in Windows in plaats van het gebruik van de vertalingslaag. Als ik zeg dat het “aanzienlijk sneller” is, bedoel ik veel, veel sneller. Net zo snel als ik Googlend “splice vs slice”.
Om die reden, ga ik laten zien hoe je de WSL 2 installeert. Op het moment van schrijven, dat gaat vereisen dat u op de “Insider” build van Windows bent.
Vorige dingen eerst: volg deze korte gids om de WSL op Windows 10 in te schakelen en controleer uw Windows-versienummer.
Zodra u het hebt geïnstalleerd, drukt u op de Windows-toets en typt u “windows insider”. Kies vervolgens “Instellingen voor het Windows Insider-programma”.
U hebt een aantal verschillende opties voor de “ring” waar u zich wilt bevinden. Veel mensen die ik ken zitten op de snelle ring. Ik ben echter een voorzichtige jongen. Als kind ging ik van de glijbaan in de speeltuin op mijn buik en hield me vast aan de zijkanten. Dat is waarom ik op de langzame ring blijf. Ik zit er nu al een paar maanden op en ik vind het niet storend of instabieler dan gewone Windows.
Het is een goede optie als je WSL 2 wilt, maar niet wilt sterven op de glijbaan.
Note: Na het publiceren van dit artikel kwam ik erachter dat WSL 2 in feite niet op de langzame ring zit. Je moet op de snelle ring zijn om hem te krijgen. Ik moet op een gegeven moment tijdens het schrijven van dit artikel op de snelle ring hebben gestaan. Dus de snelle ring wordt het. Succes met de slide!
Volgende, je moet de “Virtuele Machine Platform” functie in Windows aanzetten, die nodig is voor de WSL versie 2. Om naar dit scherm te gaan, druk op de Windows toets en type “windows features”. Selecteer vervolgens “Windows Funkties aan- of uitzetten”. Selecteer “Virtual Machine Platform”. De optie “Windows Subsystem for Linux” zou al ingeschakeld moeten zijn.
Nu de WSL is ingeschakeld, kunt u Linux installeren. Dat doe je, ironisch genoeg, rechtstreeks vanuit de Windows Store. Pas in 2019 zou ik voorstellen dat u “Linux installeert vanuit de Windows-winkel”.
Er zijn verschillende distributies om uit te kiezen, maar Ubuntu wordt het meest ondersteund door alle tools die we later zullen configureren – inclusief VS Code. Alle instructies die vanaf hier volgen gaan uit van een Ubuntu installatie. Als je een andere distro installeert, zijn alle weddenschappen uitgeschakeld.
Zoek naar “Ubuntu” in de Windows Store. Er zullen er drie zijn om uit te kiezen: Ubuntu, Ubuntu 18.04, en Ubuntu 16.04. Ubuntu houdt wel van dat 04 kleine versienummer, nietwaar?
De “Ubuntu” distro (de eerste in deze schermafbeelding) is de “meta versie”, of eigenlijk een placeholder die alleen maar wijst naar de laatste versie. Op dit moment is dat 18.04.
Ik ben voor de meta versie gegaan omdat ik je later zal laten zien hoe je door het Linux bestandssysteem kunt bladeren met Windows Explorer en het is nogal rommelig om “Ubuntu 18.04” als schijfnaam te hebben in plaats van alleen “Ubuntu”.
Deze installatie gaat vrij snel, afhankelijk van je internet verbinding. Het is slechts ongeveer 215 megabytes, maar ik zit hier op een gigabit verbinding en hoe weet je of iemand op een gigabit verbinding zit? Maak je geen zorgen, ze zullen het je vertellen.
Eenmaal geinstalleerd, zul je nu een “Ubuntu” app in je start menu hebben.
Als je daar op klikt, krijg je een Bash terminal!
Neem even de tijd om te genieten van het wonder der techniek.
U draait standaard in de WSL versie 1. Om te upgraden naar versie 2, moet u een PowerShell-terminal openen en een commando uitvoeren.
Druk op de “Windows”-toets en typ “Powershell”.
Vanuit de PowerShell-terminal kunt u zien welke versie van de WSL u hebt door wsl --list --verbose
uit te voeren.
Als u versie 1 te zien krijgt, moet u het commando --set-version
uitvoeren en de naam van de instantie (Ubuntu) en de gewenste versie (2) opgeven.
wsl --set-version Ubuntu 2
Dit gaat een tijdje duren, afhankelijk van hoeveel vlees uw machine heeft. Bij mij duurde het ongeveer een paar minuten. Als het klaar is, zit u op de nieuwste en beste versie van de WSL.
Het is uw brein op Linux… op Windows.
Linux is geen Windows. WSL is geen bash-prompt bovenop een Windows-besturingssysteem. Het is een volledig besturingssysteem op zichzelf met een eigen mappenstructuur en geïnstalleerde applicaties. Als je Node installeert met het Windows installatieprogramma, zal het typen van node
in Linux mislukken omdat Node niet in Linux is geïnstalleerd. Het is geïnstalleerd op Windows.
De echte magie van de WSL, hoewel, ligt in de manier waarop het naadloos Windows en Linux verbindt, zodat ze verschijnen als een bestandssysteem op uw machine.
File And Folder Navigation
Standaard, de Ubuntu-terminal laat je vallen in uw Linux home directory (of /home/your-user-name
). U kunt naar de Windows kant gaan door naar /mnt/c
.
Merk op dat sommige permissies hier worden geweigerd. Ik zou met de rechtermuisknop op het Ubuntu icoontje moeten klikken en op “Uitvoeren als Administrator” klikken om toegang tot deze bestanden te krijgen. Dit is hoe Windows verhoogde permissies doet. Er is geen sudo op Windows.
Toepassingen starten
U kunt elke Windows-toepassing starten vanuit de Ubuntu-terminal. Bijvoorbeeld, ik kan Windows Verkenner openen vanuit de Unbuntu terminal.
Dit werkt ook in omgekeerde volgorde. Je kunt elke applicatie uitvoeren die aan de Linux-kant is geïnstalleerd. Hier voer ik “fortune” uit, geinstalleerd in Linux vanaf de Windows commandoregel. (Omdat het geen echte Linux-installatie is zonder willekeurige, betekenisloze fortuinen.)
Twee verschillende besturingssystemen. Twee verschillende bestandssystemen. Twee verschillende sets van geïnstalleerde applicaties. Zie je hoe dit verwarrend kan zijn?
Om alles overzichtelijk te houden, raad ik je aan om al je JavaScript-ontwikkelingsbestanden en -tools op Linux geïnstalleerd te houden. Dat gezegd hebbende, de mogelijkheid om tussen Windows en Linux te switchen en bestanden van beide systemen te benaderen is de magie van de WSL. Vergeet dat niet, want dat maakt deze hele setup beter dan een standaard Linux box.
Het opzetten van je ontwikkelomgeving
Van nu af aan ga ik je een lijst geven met meningen over wat ik denk dat een goede Linux op Windows setup maakt. Onthoud wel: mijn meningen zijn slechts dat. Meningen. Het gebeurt gewoon dat net als al mijn meningen, ze 100% correct zijn.
Het krijgen van een betere Terminal
Ja, je kreeg een terminal toen je Ubuntu installeerde. Het is eigenlijk de Windows Console aangesloten op uw Linux distro. Het is geen slechte console. Je kunt het formaat aanpassen, kopieer/plak aanzetten (in instellingen). Maar je kunt geen dingen doen zoals tabbladen of nieuwe vensters openen. Net zoals veel mensen vervangende terminalprogramma’s gebruiken op de Mac (ik gebruik Hyper), zijn er ook andere opties voor Windows. De Awesome WSL lijst op Github bevat een behoorlijk uitputtende lijst.
Dat zijn allemaal prima emulators, maar er is een nieuwe optie die is gebouwd door mensen die Windows vrij goed kennen.
Microsoft heeft gewerkt aan een nieuwe applicatie genaamd “Windows Terminal”.
Windows Terminal kan worden geïnstalleerd vanuit de Windows Store en is momenteel in preview mode. Ik gebruik het nu al een tijdje, en het heeft genoeg mogelijkheden en is stabiel genoeg om het een volmondige aanbeveling te geven.
De nieuwe Windows Terminal heeft een volledige tabbladinterface, kopiëren/plakken, meerdere profielen, transparante achtergronden, achtergrondafbeeldingen – zelfs transparante achtergrondafbeeldingen. Het is een velddag als je graag je terminal aanpast, en ik ben gekomen om deze zak race te winnen.
Hier is mijn huidige terminal. We lopen hier even door een paar belangrijke tweaks.
De Windows terminal is behoorlijk aanpasbaar. Als u op de “⌄” pijl linksboven klikt (naast het “+” teken) krijgt u toegang tot “Instellingen”. Dit zal een JSON bestand openen.
Bind Kopiëren/Plakken
Bovenaan het bestand staan alle toets bindingen. Het eerste wat ik deed was “copy” toewijzen aan Ctrl + C en “paste” aan Ctrl + V. Hoe moet ik anders commando’s van Stack Overflow kopiëren en plakken die ik niet begrijp?
{ "command": "copy", "keys": },{ "command": "paste", "keys": },
Het probleem is dat Ctrl + C al is toegewezen aan SIGINT, of het Interrupt/kill commando onder Linux. Er zijn veel terminals voor Windows die dit doen door Copy/Paste te koppelen aan respectievelijk Ctrl + Shift + C en Ctrl + Shift + V. Het probleem is dat kopiëren / plakken op elke andere plaats in Windows Ctrl + C / Ctrl + V is. Ik bleef maar op Ctrl + C drukken in de terminal over en weer proberen om dingen te kopiëren. Ik kon niet stoppen met het te doen.
De Windows-terminal behandelt dit anders. Als je tekst hebt gemarkeerd en je drukt op Ctrl + C, dan wordt de tekst gekopieerd. Als er een lopend proces is, stuurt het nog steeds het SIGINT commando naar beneden en onderbreekt het. Dit betekent dat u Ctrl + C / Ctrl + V veilig kunt toewijzen aan Kopiëren / Plakken in de Windows Terminal en het zal niet interfereren met uw vermogen om processen te onderbreken.
Wie had gedacht dat Kopiëren / Plakken zoveel hartzeer kon veroorzaken?
Het standaardprofiel wijzigen
Het standaardprofiel is wat wordt weergegeven wanneer een nieuw tabblad wordt geopend. Standaard is dat Powershell. U moet naar beneden scrollen en het Linux profiel zoeken. Dit is degene die wsl.exe -d Ubuntu
opent. Kopieer de GUID en plak die in de defaultProfile
-instelling.
Ik heb deze twee instellingen verplaatst zodat ze naast elkaar staan om het overzichtelijker te maken:
De achtergrond instellen
Ik wil dat mijn achtergrond een donkere effen kleur is met een plat logo in de rechterhoek. Ik doe dit omdat ik wil dat het logo helder en zichtbaar is, maar niet in de weg staat van de tekst. Deze heb ik zelf gemaakt, maar er is een geweldige collectie platte afbeeldingen om uit te kiezen bij Simple Desktops.
De achtergrond is ingesteld met de backgroundImage
eigenschap:
"backgroundImage": "c:/Users/YourUserName/Pictures/earth.png"
Je zult ook een instelling opmerken die “acryl” heet. Hiermee kunt u de ondoorzichtigheid van de achtergrond aanpassen. Als u een effen achtergrondkleur hebt, is dit vrij eenvoudig.
"background": "#336699","useAcrylic": true,"acrylicOpacity": 0.5
U kunt dit ook doen met een achtergrondafbeelding, door de arcylicOpacity
instelling te combineren met de backgroundImageOpacity
:
"backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png","useAcrylic": true,"acrylicOpacity": 0.5
Voor mijn thema zorgt transparantie ervoor dat alles er gedempt uitziet, dus houd ik de useAcrylic
ingesteld op false
.
Verander het lettertype
Het team dat de Windows Terminal bouwt, werkt ook aan een nieuw lettertype, genaamd “Cascadia Code”. Het is nog niet beschikbaar op het moment van dit schrijven, dus je krijgt het standaard Windows lettertype in de plaats.
Het standaard lettertype in de Windows Terminal is “Consolas”. Dit is hetzelfde lettertype dat de Windows commandoregel gebruikt. Als je dat echte Ubuntu gevoel wilt, Chris Hoffman wijst je erop hoe je het officiële Ubuntu Mono font kunt installeren.
Hier is een voor en na zodat je het verschil kunt zien:
"fontFace": "Ubuntu Mono"
Ze zien er ongeveer hetzelfde uit; het grootste verschil is de spatiëring van Ubuntu Mono die de terminal net iets strakker en netter maakt.
Kleurenschema’s
De kleurenschema’s staan allemaal onderaan in het instellingen bestand. Ik heb het “Campbell” kleurenschema gekopieerd als basis. Ik probeer de kleuren overeen te laten komen met hun naam, maar ik ben ook niet bang om een schurkenstreek uit te halen. Ik verander “#ffffff” in “blauw” – het kan me niet eens schelen.
Als je dit schema, dat ik “Aarde” heb genoemd, mooi vindt, heb ik deze gist samengesteld zodat je niet handmatig al deze rommel uit een screenshot hoeft te kopiëren.
Note: De kleur previews komen door de “Color Highlight” extensie voor VS Code.
Change The Default Starting Directory
Het WSL profiel zet je standaard in je home directory aan de Windows kant. Gebaseerd op de setup die ik aanbeveel in dit artikel, zou het beter zijn om in plaats daarvan in uw Linux home
map gedropt te worden. Om dat te doen, wijzigt u de startingDirectory
instelling in uw “Ubuntu” profiel:
"startingDirectory": "\\wsl$\Ubuntu\home\burkeholland"
Noteer het pad daar. U kunt dit pad gebruiken (zonder de extra escape slashes) om de WSL te openen vanaf de Windows commandoregel.
Installeer Zsh/Oh-My-Zsh
Als u nog nooit Zsh en Oh-My-Zsh hebt gebruikt, dan staat u heel wat te wachten. Zsh (of “Z Shell”) is een vervangende shell voor Linux. Het breidt uit op de basis mogelijkheden van Bash, inclusief impliciete directory switching (geen noodzaak om cd
te typen), betere-thema ondersteuning, betere prompts, en nog veel meer.
Om Zsh te installeren, pak het met de apt package manager, die uit de doos komt met je Linux installatie:
sudo apt install zsh
Installeer oh-my-zsh met behulp van curl. Oh-my-zsh is een set configuraties voor zsh die de shell ervaring nog verder verbeteren met plugins, thema’s en een groot aantal sneltoetsen.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Dan zal het je vragen of je je standaard shell wilt veranderen in Zsh. Als u dat wilt, antwoord dan bevestigend en u kunt aan de slag met Zsh en Oh-My-Zsh.
U zult merken dat de prompt nu een stuk schoner is. U kunt het uiterlijk van de prompt veranderen door het thema in het ~/.zshrc
bestand te veranderen.
Open het met nano
, wat een beetje lijkt op VIM, maar u kunt dingen bewerken en afsluiten wanneer u dat wilt.
nano ~/.zshrc
Verander de regel die het thema instelt. Er staat een URL boven met een hele lijst van thema’s. Ik denk dat die “cloud” wel leuk is. En schattig.
Om veranderingen in de .zshrc
opgepikt te krijgen, moet je het sourceen:
source ~/.zshrc
Note: Als je een thema kiest zoals “agnoster” dat glyphs vereist, heb je een versie van Ubuntu Mono nodig die glyphs heeft. Anders zal je terminal vol staan met vreemde tekens alsof je je gezicht op het toetsenbord hebt gestampt. Nerd Fonts biedt een die lijkt te werken vrij goed.
Nu kunt u dingen doen zoals het veranderen van mappen gewoon door het invoeren van de mapnaam. Geen cd
nodig. Wil je een directory terug? Doe gewoon een ..
. Je hoeft niet eens de hele mapnaam in te typen, alleen de eerste paar letters en druk op tab. Zsh geeft u een lijst met alle bestanden/directories die overeenkomen met uw zoekopdracht en u kunt er doorheen tabben.
Installeren van Node
Als webontwikkelaar wilt u waarschijnlijk Node installeren. Ik neem aan dat je Node niet hoeft te installeren om aan webontwikkeling te doen, maar zo voelt het anno 2019 wel!
Je eerste ingeving zou kunnen zijn om Node te installeren met apt
, wat je kunt doen, maar je zou er spijt van krijgen om twee redenen:
- De versie van Node op apt is dolkomisch verouderd;
- Je zou Node moeten installeren met een versiebeheerder, zodat je niet tegen problemen met rechten aanloopt.
De beste manier om deze twee problemen op te lossen is om nvm (Node Version Manager) te installeren. Aangezien je zsh
hebt geïnstalleerd, kun je gewoon de nvm plugin toevoegen in je zshrc bestand en zsh zorgt voor de rest.
Installeer eerst de plugin door te clonen in de zsh-nvm
repo. (Maak je geen zorgen, Git is standaard aanwezig op je Ubuntu installatie.)
git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm
Voeg het vervolgens toe als een plugin in het ~/.zshrc
bestand.
`nano ~/.zshrc`plugins (zsh-nvm git)
Houd eraan om het zshrc bestand opnieuw te sourceen met source ~/.zshrc
en je zult zien dat nvm geïnstalleerd wordt.
Nu kun je node installeren met nvm. Het maakt het eenvoudig om meerdere versies van node naast elkaar te installeren, en er moeiteloos tussen te wisselen. Ook geen foutmeldingen meer bij globale npm-installaties!
nvm install --lts
Ik raad dit aan boven de standaard nvm-installatie omdat de plugin je de mogelijkheid geeft om nvm eenvoudig te upgraden. Dit is een beetje lastig met de standaard “curl” installatie. Het is een commando met de plugin.
nvm upgrade
Gebruik automatische suggesties
Een van mijn favoriete plugins voor zsh is zsh-autosuggestions. Het onthoudt dingen die je eerder in de terminal hebt getypt, en herkent ze dan als je ze opnieuw begint te typen, en “auto-suggests” de regel die je misschien nodig hebt. Deze plugin is vaker van pas gekomen dan ik me kan herinneren – vooral als het gaat om lange CLI commando’s die ik in het verleden heb gebruikt, maar me nooit meer kan herinneren.
Kloon de repo naar de zsh extensions folder:
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
Toevoeg het dan toe aan je zsh plugins en source het zshrc bestand:
nano ~/.zshrc# In the .zshrc fileplugins(zsh-nvm zsh-autosuggestions git)source ~/.zshrc
De plugin leest je zsh geschiedenis, dus begin met het typen van een commando dat je eerder hebt getypt en kijk naar de magie. Probeer maar eens het eerste deel van dat lange klooncommando hierboven te typen.
Als je op ↹ drukt, wordt het commando automatisch ingevuld. Als u op ↹ blijft drukken, worden alle commando’s in uw geschiedenis doorlopen die overeen zouden kunnen komen.
Belangrijke sneltoetsen
Er zijn een paar terminal sneltoetsen die ik altijd gebruik. Ik vind dit bij al mijn gereedschappen – inclusief VS Code. Proberen alle sneltoetsen te leren is tijdverspilling omdat u ze niet genoeg zult gebruiken om ze te onthouden.
Hier zijn er een paar die ik regelmatig gebruik:
Terminal Shortcut | Wat doet het? |
---|---|
Ctrl + L | Dit wist de terminal en brengt je terug naar het begin. Het is het equivalent van het typen van “clear”. |
Ctrl + U | Hiermee wordt alleen de huidige regel gewist. |
Ctrl + A | Stuurt de cursor naar het begin van de commandoregel. |
Ctrl + E | Verplaats de cursor naar het einde van de regel. |
Ctrl + K | Verwijder alle karakters na de cursor. |
Dat is het! Al het andere heb ik waarschijnlijk geleerd en dan vergeten omdat het nooit gebruikt wordt.
Git configureren(Hub/Lab/Whatevs)
Git komt op Ubuntu, dus er is geen installatie nodig. Je kunt de instructies volgen bij de broncontrole hoster van je keuze om je ssh sleutels aangemaakt en werkend te krijgen.
Noteer dat in de Github instructies, het je verteld om het “kopieer” hulpprogramma te gebruiken om je ssh sleutel te kopiëren. Ubuntu heeft het “xcopy” -commando, maar het gaat hier niet werken omdat er geen interop is tussen Linux en Windows in termen van een klembord.
In plaats daarvan kun je gewoon de Windows Clipboard executable gebruiken en deze rechtstreeks vanuit de terminal aanroepen. Je moet eerst de tekst ophalen met cat
, en dat dan naar het Windows klembord pijpen.
cat ~/.ssh/id_rsa.pub | clip.exe
De Github docs vertellen je om ervoor te zorgen dat ssh-agent
wordt uitgevoerd. Dat is niet zo. U zult dit zien wanneer u probeert uw sleutel aan de agent toe te voegen:
U kunt de agent starten, maar de volgende keer dat u Windows opnieuw opstart of de WSL wordt gestopt, zult u deze opnieuw moeten starten. Dit komt omdat er geen initialisatiesysteem in de WSL zit. Er is geen systemd
of een ander proces dat al je services start als de WSL start. WSL is nog in preview, en het team werkt aan een oplossing hiervoor.
In de tussentijd, geloof het of niet, is er ook een zsh plugin voor dit. Het heet ssh-agent
, en het komt geïnstalleerd met oh-my-zsh, dus alles wat je hoeft te doen is er naar te verwijzen in het .zshrc
bestand.
zsh-nvm zsh-autosuggestions ssh-agent git
Dit zal de ssh-agent automatisch starten als die niet draait de eerste keer dat je de WSL opstart. Het nadeel is dat het je iedere keer om je passphrase zal vragen als je de WSL opnieuw opstart. Dat betekent in feite dat u uw computer altijd opnieuw moet opstarten.
VS Code en de WSL
De WSL heeft geen GUI, dus u kunt geen visueel hulpprogramma zoals VS Code installeren. Dat moet aan de Windows-kant worden geïnstalleerd. Dit geeft een probleem omdat een programma dat aan de Windows kant draait toegang heeft tot bestanden aan de Linux kant, en dit kan resulteren in allerlei eigenaardigheden en “permission denied” problemen. Als algemene vuistregel beveelt Microsoft aan dat u geen bestanden in de WSL-kant wijzigt met Windows programma’s.
Om dit op te lossen is er een uitbreiding voor VS Code genaamd “Remote WSL”. Deze extensie is gemaakt door Microsoft, en stelt u in staat om te ontwikkelen binnen de WSL, maar vanuit VS Code.
Zodra de extensie is geïnstalleerd, kunt u VS Code direct aan de Ubuntu-kant koppelen door het Command Palette te openen (Ctrl + Shift + P) en “Remote-WSL: New Window” te selecteren.
Dit opent een nieuwe instantie van VS Code die u in staat stelt te werken alsof u zich volledig aan de Linux-kant van de dingen bevindt. Met “Bestand/Openen” bladert u door het Ubuntu-bestandssysteem in plaats van het Windows-bestandssysteem.
De geïntegreerde terminal in VS Code opent uw prachtig aangepaste zsh-installatie. Alles “werkt gewoon” zoals het zou moeten wanneer u de Remote WSL-extensie hebt geïnstalleerd.
Als u code opent vanaf uw terminal met code .
, zal VS Code automatisch detecteren dat deze is geopend vanaf de WSL, en de Remote WSL-extensie automatisch koppelen.
VS Code Extensions With Remote WSL
De Remote WSL-extensie voor VS Code werkt door een kleine server op te zetten aan de Linux-kant, en daar vervolgens verbinding mee te maken vanuit VS Code aan de Windows-kant. Dat is het geval, de extensies die u in VS Code hebt geinstalleerd zullen niet automatisch verschijnen wanneer u een project opent vanuit de WSL.
Bij voorbeeld, ik heb een Vue project open in VS Code. Hoewel ik alle juiste Vue-extensies heb geïnstalleerd voor syntaxismarkering, opmaak en dergelijke, doet VS Code alsof het nog nooit een .vue
-bestand heeft gezien.
Alle extensies die u hebt geïnstalleerd, kunnen worden ingeschakeld in de WSL. Zoek gewoon de gewenste extensie in de WSL en klik op de knop “Installeren in WSL”.
Alle extensies die in de WSL zijn geïnstalleerd, worden in hun eigen sectie weergegeven in de Extensions Explorer-weergave. Als u veel extensies hebt, kan het een beetje vervelend zijn om ze allemaal afzonderlijk te installeren. Als u alleen elke extensie wilt installeren die u in de WSL hebt, klikt u op het kleine cloud-download pictogram boven aan de sectie ‘Lokaal – Geïnstalleerd’.
Hoe je Dev-mappen instelt
Dit is al een opiniërend artikel, dus hier is er een waar je niet om gevraagd hebt, over hoe ik denk dat je je projecten op je bestandssysteem moet structureren.
Ik bewaar al mijn projecten aan de Linux-kant. Ik zet mijn projecten niet in “Mijn Documenten” en probeer er dan mee te werken vanuit de WSL. Mijn hersenen kunnen dat niet aan.
Ik maak een map genaamd /dev
die ik in de root van mijn /home
map in Linux zet. In die map, maak ik een andere map die dezelfde naam heeft als mijn Github repo: /burkeholland
. Die map is waar al mijn projecten heen gaan – zelfs degene die niet naar Github worden gepushed.
Als ik een repo kloon van een ander Github account (bijv. “microsoft”), maak ik een nieuwe map aan in “dev” genaamd /microsoft
. Ik kloon dan de repo in een map daarbinnen.
Basically, ik bootst dezelfde structuur na als broncontrole op mijn lokale machine. Ik vind het veel makkelijker om te beredeneren waar projecten zijn en aan welke repo’s ze zijn gekoppeld, alleen maar door hun locatie. Het is eenvoudig, maar het is zeer effectief om me te helpen alles georganiseerd te houden. En ik kan alle hulp gebruiken die ik kan krijgen.
Browsing Files From Windows Explorer
Er zijn momenten waarop je een bestand in Linux vanuit de Windows-kant moet benaderen. Het mooie van de WSL is dat u dat nog steeds kunt doen.
Eén manier is om de WSL te benaderen net als een gemapte schijf. U opent het met een \wsl$
direct vanuit de verkennerbalk:
\wsl$
U kunt dit om een aantal verschillende redenen doen. Vandaag had ik bijvoorbeeld een Chrome-extensie nodig die niet in de webstore staat. Dus heb ik de repo in WSL gekloond, er vervolgens naar toe genavigeerd als een “Unpacked Extension” en deze in Edge geladen.
Een ding dat ik met enige regelmaat doe in Linux is om de directory die een bestand bevat direct vanaf de terminal te openen. Je kunt dit ook in de WSL doen, door direct explorer.exe
aan te roepen. Dit commando opent bijvoorbeeld de huidige directory in Windows Verkenner.
$ explorer.exe .
Dit commando is echter een beetje omslachtig. Op Linux is het gewoon open .
. We kunnen dezelfde magie maken door een alias te maken in de ~/.zshrc
.
alias open="explorer.exe"
Docker
Toen ik zei dat alle tooling aan de Linux-kant zou moeten zijn, meende ik dat. Dat is inclusief Docker.
Dit is waar het rubber echt de weg begint te raken. Wat we hier nodig hebben is Docker, draaiend binnen Linux draaiend binnen Windows. Het is een beetje een Russische Nesting Doll als je het opschrijft in een blog post. In werkelijkheid is het vrij eenvoudig.
Je hebt de juiste versie van Docker voor Windows nodig. Op het moment van dit schrijven is dat de WSL 2 Tech Preview.
Wanneer je het installatieprogramma uitvoert, zal het je vragen of je Windows-containers wilt gebruiken in plaats van Linux-containers. Dat moet je zeker doen. Anders krijg je niet de optie om Docker in de WSL te draaien.
U kunt Docker nu inschakelen in de WSL door op het item in het systeemvak te klikken en “WSL 2 Tech Preview” te selecteren:
Nadat u de service hebt gestart, kunt u Docker binnen de WSL gebruiken, net zoals u zou verwachten dat te kunnen doen. Het draaien van Docker in de WSL zorgt voor een behoorlijk grote performance boost, evenals een boost in koude start tijd op containers.
Mag ik je ook aanraden om de Docker extensie voor VS Code te installeren? Het zet een visuele interface op je Docker setup en maakt het over het algemeen gewoon makkelijker om met Docker te werken omdat je niet al die command-line vlaggen en opties hoeft te onthouden.
Get More Bash On Windows
Op dit punt zou je het idee moeten krijgen over hoe je Bash op Windows kunt zetten, en hoe het werkt als je het daar eenmaal hebt. Je kunt je terminal eindeloos aanpassen en er zijn allerlei rad programma’s die je kunt toevoegen om dingen te doen zoals automatisch PATH variabelen instellen, aliassen maken, een ASCII koe in je terminal krijgen, en nog veel meer.
Het draaien van Bash op Windows opende een geheel nieuw universum voor me. Ik ben in staat om Windows te combineren, waar ik van hou voor de productiviteitskant, en Linux, waar ik van afhankelijk ben als ontwikkelaar. Het beste van alles is dat ik nu apps kan bouwen voor beide platforms met één machine.
Verder lezen
Je kunt hier meer lezen over Bash op Windows:
- “Windows Subsystem For Linux Installation Guide For Windows 10,” Microsoft Docs
- “How To Install And Use The Bash Shell On Windows 10,” Chris Hoffman, How-To Geek
- “Sharing SSH With WSL,” Drew Wilson
- “Getting Crazy With The Window Subsystem For Linux,”Brian Ketelsen
- “Everything You Can Do With Windows 10’s New Bash Shell,” Chris Hoffman, How-To Geek
Speciale dank aan Brian Ketelsen, Matt Hernandez, Rich Turner, en Craig Loewen voor hun geduld, hulp, en begeleiding bij dit artikel.