Med utgåvan av årsdagen uppdatering för Windows 10, Microsoft tillkännagav Windows Subsystem för Linux (WSL) - ett sätt att köra riktiga, inbyggda Bash på Windows 10, som stöder körning av inbyggda Linux-binärer. Det gör det genom att köra en Ubuntu Linux-bild på användarläget ovanpå Windows.
Det betyder att du kan köra Linux-kommandoradsverktyg som ls
, grep
, top
och chmod
. Eftersom du kör äkta Ubuntu under, körs lsb-release -a
ger dig följande utdata:
Du kan använda apt-get
och vänner för att installera verktyg som vim
, git
, screen
, tmux
eller ens spela ett spel av nethack:
Tänk dock på att systemet är i beta och inte avsett för serverens arbetsbelastning. Det är bara ett verktyg för utvecklare (och entusiaster) att testa sina Linuxcentrerade applikationer på Windows utan ändringar. Det här är inte heller ett verktyg som är avsett att köra Linux GUI-applikationer eller miljöer som Gnome eller KDE, även om det också är möjligt med vissa hackar. Efter att ha klarat det, låt oss ta en titt på hur Linux-skalet fungerar i Windows 10.
Windows Subsystem för Linux (WSL)
Enligt den officiella dokumentationen är "WSL en samling komponenter som möjliggör inbyggda Linux ELF64-binärer att köras på Windows". Det gör det genom att implementera ett virtualiserat Linux-kärngränssnitt ovanpå Windows NT-kärnan. Det innebär att det inte använder någon kod från den faktiska Linux-kärnan - när en applikation gör ett Linux-specifikt systemsamtal (syscall), översätter WSL det till motsvarande Windows-syscall, vilket gör all den tunga lyftningen.
Skillnader från virtuella maskiner och Cygwin
Låt oss nu titta på hur Linux Bash Shell på Windows 10 är annorlunda jämfört med liknande virtuella maskiner och Cygwin.
Virtuella maskiner
Du kanske tänker, "Tja, varför använda det här? Varför inte bara använda en Linux VM i Windows? "
Jämfört med en virtuell maskin använder WSL färre resurser . Det låter dig också arbeta med dina filer som du skulle på Linux, samtidigt som du får fullständig åtkomst till det underliggande Windows-filsystemet utan att behöva förlita sig på delade mappar eller nätverksandelar.
Cygwin
En annan populär metod att köra populära Linux / Unix-liknande verktyg på Windows är Cygwin. Den största skillnaden mellan de två metoderna är att Cygwin inte är ett sätt att köra inbyggda Linux-binärer på Windows. Det tillhandahåller bara en uppsättning GNU och Open Source-verktyg som ger funktionalitet som liknar en Linux-distribution på Windows.
Å andra sidan är WSL-verktyg inbyggda Linux ELF-64 kompilerade binärer som körs på Windows. Om du kör ett apt-get install emacs
kommando i WSL kommer du till exempel att ladda ner och installera samma filer som på en Ubuntu 14.04-installation, från de officiella Ubuntu-arkiverna.
Användare, behörigheter och filsystem i WSL
Filsystemhierarki
WSL är installerat under den aktuella användarens %LocalAppData%\lxss\rootfs
katalog. Detta kallas WSL Environment och fungerar som Linux " /
" (root) -katalogen. Om ditt användarnamn på Windows till exempel är beebom
, kommer Linux-rotkatalogen att placeras i C:\Users\beebom\AppData\Local\lxss\rootfs.
Det betyder att varje Windows-användare kan ha sin egen WSL-miljö och kan göra ändringar som apt-get install
, utan att påverka andra Windows-användare.
Det går att komma åt det underliggande Windows-filsystemet i WSL. Alla enheter är monterade under /mnt.
Till exempel är C:\
monterad under /mnt/c
, D:\
är monterad under /mnt/d
, etc.
Användare och behörigheter
När du först installerar WSL, kommer det att be dig att skapa en ny standard Linux-användare. Den här användaren behöver inte ha samma namn som den nuvarande Windows-användaren, och behandlas som en separat enhet i allmänhet. Du kan även skapa flera Linux-användare, som styrs av en enda Windows-användare.
Det är möjligt att få root
privilegier med sudo
kommandot. Tänk på att root
i WSL endast påverkar användarens rättigheter inom Linux-miljö och filsystem - de har ingen inverkan på de beviljade Windows-privilegierna. Exempelvis kan en WSL-session med Windows-administratörsbehörigheter cd /mnt/c/Users/Administrator
medan en Bash-session utan administratörsbehörigheter ser Tillstånd nekad. Att skriva sudo cd /mnt/c/Users/Administrator
ger inte åtkomst till administratörskatalogen eftersom behörigheterna är begränsade av Windows.
Linux-specifika filsystemfunktioner
Linux är ett skiftlägeskänsligt system. Det betyder att photo.png
och Photo.png
behandlas som två olika filer. Medan Windows inte är skiftlägeskänslig är det fortfarande medvetet . Det betyder att medan photo.png
och Photo.png
inte behandlas som två distinkta filer, är det säkert medveten om skillnaden i fallet.
WSL hanterar fallkänslighet precis som på Linux. Det är även möjligt att skapa två filer vars namn bara skiljer sig från fall till fall utanför WSL-miljön. Tänk på att många Windows-program inte kan hantera sådana situationer och kanske inte kan öppna en eller båda filerna.
På samma sätt stöds symboliska länkar, förutsatt att du kör ett NTFS-filsystem. Symboliska länkar fungerar emellertid bara inom WSL och kan inte lösas av andra Windows-program.
Linux stöder också nästan alla specialtecken inom filnamn, medan Windows är mer restriktiv. WSL tillåter dock att du använder sådana specialtecken, förutsatt att de är begränsade till Linux-systemets miljö.
Klar för att köra Linux-kommandoraden på Windows?
Så det är hur Ubuntu Bash eller Linux Bash Shell, även känt som Windows Subsystem for Linux, fungerar på Windows 10 (med årsdaguppdateringen). Tillsammans med dess arbete lärde vi oss också hur det är annorlunda och bättre än de traditionella metoderna för att köra Linux-specifika kommandon på Windows. Så om du alltid har velat använda Linux-kommandon, kom igång och om du har frågor, kommentarer eller tips, se till att du meddelar oss i kommentarfältet.