Komplett WSL2-automatisering med Zsh och Oh My Zsh på Windows

Senaste uppdateringen: 26 februari 2026
Författare: TecnoDigital
  • WSL2 låter dig använda ett komplett Linux-system i Windows och kombinera det med Zsh för att skapa en kraftfull och modern terminal.
  • Windows Terminal, Nerd Fonts och Oh My Zsh förbättrar den visuella och funktionella upplevelsen med anpassade teman, ikoner, plugin-program och alias.
  • Bootstrap-skript, dotfiles och Dev Containers gör det enkelt att automatisera och versionsredigera miljön för ett helt utvecklingsteam.
  • Integration med VS Code och verktyg som NVM, Conda, BAT, LSD eller FZF skapar ett stabilt och reproducerbart arbetsflöde.

WSL2 Zsh-automatisering på Windows

Om du utvecklar i Använder du Node.js eller Python på Windows och vill ha bekvämligheten med Linux? Utan att överge dina spel, dina vanliga verktyg eller ditt arbetsflöde är WSL2 och Zsh förmodligen den kombination du har letat efter. Att ha en riktig Linux-distribution, med en uppgraderad terminal och allt perfekt automatiserat, innebär att det inte längre är en prövning av timmar som spenderas på att kopiera kommandon att konfigurera en utvecklingsmiljö.

I den här guiden får du se, med stor omsorg och detaljer, Hur man helt automatiserar en WSL2-miljö med Zsh och Oh My ZshHur man integrerar det med Windows Terminal och Visual Studio Code, och hur man paketerar det i skript och punktfiler så att du (eller någon i ditt team) kan replikera samma konfiguration på några minuter. Tanken är att du ska lägga mindre tid på att brottas med konfiguration och mer tid på att koda så mycket du vill.

Vad är WSL2 och varför är det värt att använda med Zsh?

WSL (Windows Subsystem for Linux) är det lager som gör att Linux kan köras i Windows utan tunga virtuella maskiner eller dubbelstart. Med WSL2 tar Microsoft det ett steg längre: det kör en fullständig Linuxkärna med Hyper-V, med mycket låg resursförbrukning och prestanda mycket lik en inbyggd installation.

Tack vare detta kan du installera distributioner som Ubuntu, Debian, Kali eller Alpine direkt från Microsoft Store eller med PowerShell-kommandon, och njut av ett Linux-filsystem, apt-paket, utvecklingsverktyg och naturligtvis avancerade skal som zsh med Åh min Zsh och dess plugins.

Under många år, Programmering från Windows var oattraktivtUtan bash, med ett otympligt filsystem och färre inbyggda utvecklarverktyg, migrerade de flesta till slut till Linux eller macOS. Med WSL2 förändras detta radikalt: du stannar kvar på Windows, men Du arbetar som om du vore på en Linux-distribution, med möjlighet att automatisera nästan hela konfigurationsprocessen.

Det fina med att kombinera WSL2 med Zsh är att Zsh erbjuder en terminalupplevelse som är betydligt bättre än den klassiska bashAvancerad autokomplettering, förslag, teman, Git-integration, NVM-plugins, alias, syntaxmarkering och mycket mer som, när du väl provat det, är svårt att lämna bakom sig.

Anpassad WSL2- och Zsh-miljö

Installera och förbered WSL2 på Windows 10 eller 11

Innan vi går in på finjustering av automatisering, Du behöver WSL2 aktiverat och en Linux-distribution installerad.Processen är idag mycket enklare än i de tidiga versionerna, och nästan allt kan göras med ett enda kommando.

En Nyare Windows 10 (version 2004 eller senare) eller Windows 11Öppna bara PowerShell som administratör (sök efter det i Start-menyn, högerklicka, "Kör som administratör") och starta:

wsl --install

Detta kommando ansvarar för aktivera de nödvändiga valfria funktionerna, ladda ner Linux-kärna, slå fast WSL2 som standardversion och installera som standard ubuntu som en distribution. När processen är klar kommer systemet att be dig starta om datorn för att tillämpa ändringarna.

Om du föredrar en annan distribution kan du ange det i själva kommandot, till exempel för att installera Debian:

wsl --install -d Debian

När som helst du kan Kontrollera statusen för installerade distributioner och deras versioner med:

wsl -l -v

Och om du vill byta distribution eller rensa upp en du inte längre använder, har du alternativ som Lista de distributioner som finns tillgängliga online eller ta bort en specifik installation:

wsl -l -o
wsl --unregister Ubuntu-20.04

När du först startar distributionen visas en textbaserad guide som ber dig att Skapa en UNIX-användare och deras lösenordDet kommer att vara din huvudanvändare inom WSL, med deras typiska HOME i /home/tuusuarioOch det är viktigt att du skriver ner ditt användarnamn och lösenord eftersom du kommer att använda dem för administrativa uppgifter. sudo.

Konfigurera Windows Terminal för att fungera med WSL2

När du väl har WSL2 igång är nästa logiska steg Förbättra kommandoradsupplevelsen i Windows med hjälp av Windows TerminalDen här applikationen stöder flikar, paneler, teman, transparenser, profiler per distribution, teckensnitt med ikoner och mycket mer.

Installera Windows Terminal från Microsoft Store Och när du öppnar den ser du att den vanligtvis visar en PowerShell- eller CMD-profil som standard. Från rullgardinsmenyn kan du välja din WSL-distribution (Ubuntu, Debian, etc.) och öppna den i en ny flik.

För Ubuntu eller vilken distribution du än använder i WSL kommer alltid att öppnas som standard.Du kan redigera inställningarna. Windows Terminal sparar sina inställningar i en JSON-fil, tillgänglig från inställningsmenyn. Leta reda på fältet "defaultProfile" och lägg Ubuntu-profilens GUID (du kommer att se det i listan) profiles) som ett värde.

Utöver det kan du Anpassa färgteman och lägg till akryltransparens för att ge det en mer modern touch. Till exempel, i den delen av "defaults" För profilerna kan du definiera något liknande:

  Linux i molnet: Vad är det och varför är det viktigt?

"defaults": {
"useAcrylic": true,
"acrylicOpacity": 0.4
}

Om du vill ta det ett steg längre med färgerna kan du lägga till en anpassat schema i avsnittet "schemes" från JSON, som definierar bakgrundsfärger, förgrundsfärger och den grundläggande terminalpaletten. Ett typiskt exempel skulle vara något i stil med ett solariserat tema, till vilket du sedan kan associera en WSL-profil med hjälp av egenskapen "colorScheme" : "wsl" i motsvarande profil.

Windows-terminalen med WSL2 och Zsh

Installera och automatisera Zsh + Oh My Zsh i WSL2

Med WSL- och Windows Terminal-basen redo är det dags att lägga till lite kött i skalet. Zsh är ett mycket kraftfullare alternativ till bashoch kombinerat med Åh min Zsh Det blir en schweizisk armékniv för att arbeta med Git, Node, Python och praktiskt taget vad som helst i terminalen.

I din WSL-distribution (till exempel Ubuntu), börja med Uppdatera arkiven och installera minsta möjliga nödvändiga paket:

sudo apt update
sudo apt install git zsh -y

Installera sedan Oh My Zsh med det officiella skriptet och dra nytta av curl för att ladda ner installationsprogrammet och kör det direkt:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Under installationen kommer du att bli tillfrågad om du vill Ställ in Zsh som standardskalSäg ja till honom. Om du någonsin behöver göra det för hand kan du använda:

chsh -s /bin/zsh

När det är klart genereras en konfigurationsfil i din HOME-katalog som heter ~/.zshrcdär allt kontrolleras: plugins, tema, alias, miljö, rutter…

Ett mycket populärt tema för Oh My Zsh är agnost, fokuserad på att visa Git-information tydligt. För att aktivera den, redigera filen ~/.zshrc med din föredragna redigerare (till exempel vi ~/.zshrc o nano ~/.zshrc) och se till att ämnesraden ser ut så här:

ZSH_THEME="agnoster"

Det rekommenderas också att, i både bash och Zsh, tvinga skalet att starta i din Linux HOME-katalog (inte i Windows användarmapp), eftersom WSL fungerar mycket bättre i distributionens inbyggda filsystem. Lägg bara till följande i slutet av ~/.zshrc en enkel rad:

cd ~

Nördfonter och Powerline: ikoner och estetik i terminalen

För att Zsh- och Oh My Zsh-låtarna ska se ut som de är avsedda, Du behöver ett typsnitt som stöder speciella ikoner och symboler. (Dessa kallas Nerd Fonts eller Powerline-fonter.) Om du inte gör det kommer du att se konstiga rutor eller trasiga tecken i mer avancerade prompter.

Du har två populära alternativ: installera en klassisk Powerline-nätaggregatspaket eller välj ett specifikt Nerd-typsnitt som MesloLGS NF o Hack Nerd-typsnittEn snabb metod är att klona Powerline-teckensnittsarkivet från PowerShell i Windows, först genom att navigera till en tom mapp:

git clone https://github.com/powerline/fonts.git
cd fonts
.\install.ps1

Installationsskriptet lägger automatiskt till ett antal teckensnitt i systemet. Sedan, från inställningarna i Windows Terminal, Välj ett av de installerade teckensnitten För WSL-profilen, till exempel:

"fontFace": "DejaVu Sans Mono for Powerline"

Om du föredrar något ännu mer modernt kan du ladda ner ett specifikt Nerd-typsnitt (som MesloLGS NF Regular.ttf) från Nerd Fonts webbplats, installera det på Windows genom att dubbelklicka och välja "Installera" och välj det sedan som teckensnitt i Windows Terminal-profilen.

Vid användning av avancerade teman som t.ex. Effektnivå10kDet rekommenderas starkt att använda Nerd Fonts. För att installera det här temat kan du göra följande i ditt WSL-användarkonto:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >> ~/.zshrc

Efter att ha laddat om Zsh (zsh eller stäng och öppna terminalen), kommer en guidad guide att startas (p10k configure) för att anpassa prompten efter dina önskemål, generera en fil ~/.p10k.zsh med alla inställningar.

Avancerad automatisering av WSL2 och Zsh

Användbara plugins för Zsh: omedelbar produktivitet

En av de stora fördelarna med Oh My Zsh är att Det låter dig lägga till plugins väldigt enkelt. för att förbättra arbetsupplevelsen. Några av de vanligaste i WSL2-utvecklingsmiljöer är följande.

Plugin Den är aktiverad som standard och ansvarar för att visa Vilken gren är du på, om du har väntande ändringar, om det finns några obekräftade ändringar?...allt direkt i prompten. Det är perfekt för att hålla koll på ditt arkivs status medan du surfar.

En annan klassiker är zsh-autosuggestions, vilket föreslår kommandon i grått baserat på din historik, så att du kan acceptera förslaget med ett tangenttryck och Undvik att skriva samma långa kombinationer om och om igen. Så här installerar du det:

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions

Det rekommenderas också zsh-syntax-markeringvilket färgar kommandona beroende på om de är korrekt stavade, om filerna du pekar på finns etc., vilket hjälper dig att upptäck syntaxfel innan du trycker på Enter:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh/zsh-syntax-highlighting

Aktivera dessa plugins, lägg till följande i slutet av din ~/.zshrc något i stil med:

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

En annan mycket praktisk extrafunktion är Oh My Zsh sudo-pluginvilket till exempel låter dig trycka på en tangentkombination för att lägg snabbt till "sudo" före det sista kommandot Den körs. Du kan ladda ner den så här:

mkdir -p ~/.zsh/sudo-plugin && cd ~/.zsh/sudo-plugin
wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/sudo/sudo.plugin.zsh

Och aktivera den genom att lägga till den i din ~/.zshrc:

source ~/.zsh/sudo-plugin/sudo.plugin.zsh

Förbättrade kommandoradsverktyg (BAT, LSD, FZF, HTTPie)

Eftersom du justerar terminalen är det värt att installera lite moderna alternativ till klassiska verktyg som cat o lssamt sökverktyg och användarvänliga HTTP-klienter.

  Dela filer via Bluetooth i Windows 11: En komplett guide

BAT Det är en "proffs"-version av cat, Med syntaxmarkering, numrering, Git-integration...Perfekt för att läsa kodfiler direkt i terminalen. Du kan installera det genom att ladda ner motsvarande paket från GitHub (och anpassa det till din arkitektur):

wget https://github.com/sharkdp/bat/releases/download/v0.20.0/bat_0.20.0_amd64.deb
sudo dpkg -i bat_0.20.0_amd64.deb

För att integrera det i ditt arbetsflöde kan du skapa alias i ~/.zshrc så när man skriver cat Jag anropade faktiskt BAT, men behöll genvägar till det traditionella verktyget:

alias cat='/bin/bat'
alias catn='/bin/cat'
alias catnl='/bin/bat --paging=never'

För sin del, LSD ersätter ls med färger, ikoner och en mycket mer läsbar utskriftDen installeras på liknande sätt som BAT:

wget https://github.com/Peltoche/lsd/releases/download/0.21.0/lsd_0.21.0_amd64.deb
sudo dpkg -i lsd_0.21.0_amd64.deb

Sedan kan du omdefiniera vanliga alias för att sortera kataloger, visa detaljer, dölja dem etc., till exempel:

alias ll='lsd -lh --group-dirs=first'
alias la='lsd -a --group-dirs=first'
alias l='lsd --group-dirs=first'
alias lla='lsd -lha --group-dirs=first'
alias ls='lsd --group-dirs=first'

För interaktiva sökningar i terminalen, FZF Det är nästan nödvändigt: lanserar en stegvis sökmotor vilket integreras med historik, sökvägar och andra kommandon. Det installeras genom att klona dess arkiv och köra installationsskriptet:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Installationsprogrammet kommer att lägga till i din ~/.zshrc el source motsvarande (något i stil med [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh) så att allt är klart. Den aktiveras med genvägar som CTRL + T.

Slutligen, om du arbetar med API:er, HTTPie Det erbjuder en mycket bekvämare upplevelse än curl, Med färgad utdata och mycket läsbar syntaxDu kan installera det genom att lägga till dess arkiv och använda apt:

curl -SsL https://packages.httpie.io/deb/KEY.gpg | apt-key add -
curl -SsL -o /etc/apt/sources.list.d/httpie.list https://packages.httpie.io/deb/httpie.list
apt update
apt install httpie
apt upgrade httpie

Node.js, NVM, Python och andra verktyg i WSL2

En av de främsta anledningarna till att hela den här verksamheten startades är att kunna att ha en robust miljö för Node.js, Python och andra teknikermed enkel och reproducerbar versionshantering. Det är här det kommer in i bilden NVM för Node och verktyg som Conda för Python.

När det gäller Node är det ideala att använda NVM (Nodversionshanterare)vilket låter dig installera flera versioner och växla mellan dem med ett par kommandon. Från din WSL2 kan du installera NVM med:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh

Installera sedan Node (den nuvarande stabila versionen eller en specifik version):

nvm install node
nvm install 18.17.0

Om du vill kontrollera att allt är i sin ordning har du de typiska versionsverifieringskommandona till hands, vilka borde returnera giltiga värden:

node --version
npm --version

Med Zsh laddas NVM ibland inte automatiskt när du öppnar terminalen. Du kan åtgärda detta på två sätt: manuellt lägga till nödvändiga variabler till ~/.zshrc eller med hjälp av pluginet zsh-nvm från Oh My Zsh. Den manuella varianten kan se ut ungefär så här:

export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

Om du väljer pluginet, öppna ~/.zshrc, leta reda på plugin-raden (till exempel plugins=(git)) och lägger till zsh-nvm Lägg till den i listan. Efter att du har sparat och startat om terminalen bör NVM laddas utan problem.

För Python är ett mycket kraftfullt alternativ Conda (eller Miniconda), vilket tillåter skapa isolerade miljöer, hantera beroenden och hantera Python-versioner utan att behöva hantera det globala systemet. Det finns automatiserade skript som, inom ett WSL-konfigurationsarkiv, installerar Conda, GPU-drivrutiner och andra komponenter nästan transparent.

Automatisera konfiguration med skript, punktfiler och utvecklarcontainrar

Hittills har vi sett hur man konfigurerar allt "manuellt", men nyckeln till en bra arbetsmiljö, särskilt i team, ligger i automatisera onboarding och versionshantering av konfigurationenWSL2 är perfekt för detta eftersom det låter dig paketera allt från installation till skalanpassning.

Ett mycket vanligt tillvägagångssätt är att ha en bootstrap-skript (till exempel install.sh o setup.sh) i ett teamarkiv som sekventiellt utför uppgifter som:

  • Kontrollera förutsättningarna (Windows-version, aktiv WSL2, närvaro av Docker Desktop om det behövs, etc.).
  • Installera eller uppdatera WSL-distributionenGrundpaket, Zsh, Oh My Zsh, NVM, Conda, etc.
  • Klona och tillämpa punktfiler (.zshrc, .bashrc, .gitconfig, temafiler, delade alias…).
  • Installera projektstackverktyg (Node, Python, databaser, specifika CLI:er).
  • Konfigurera valideringsskript som make check-env för att verifiera att allt är korrekt.

Dessa skript måste vara idempotentDet vill säga, de ska kunna köras flera gånger utan att något går sönder, och det är lämpligt att dokumentera alla miljövariabler i en fil som .env.example så att varje person kan anpassa sin miljö utan att röra huvudskriptet.

Ett annat mycket kraftfullt lager är VS-kodutvecklingsbehållare (.devcontainerDe består av deklarativa beskrivningar av miljön (Dockerfile, VS Code-konfiguration, tillägg, portar etc.) som tillåter varje projekt har sin egen utvecklingscontainerKombinerat med WSL2, tack vare tillägget Fjärrkontroll – WSLDu kan öppna ett repository i en Linux-container i WSL och se till att alla har samma versioner och verktyg.

Parallellt, underhåll ett arkiv med versionerade punktfiler (till exempel på GitHub) hjälper till att dela och synkronisera skalkonfigurationer, alias, teman och program mellan flera datorer eller till och med mellan olika maskiner som tillhör samma utvecklare. Verktyg som chezmoi eller enkla symboliska kopieringsskript används ofta för det.

  Hur man sammanfogar två NTFS-partitioner i Windows: Säkra metoder, begränsningar och verktyg

Integrera WSL2 och Zsh med Visual Studio-kod

Upplevelsen förbättras avsevärt om du integrerar hela den här miljön med en lätt men mycket kapabel editor som Visual Studio Code. Tanken är att VS Code fungerar direkt mot WSL-filsystemetundvika prestanda- och behörighetsproblem.

Installera först VS Code på Windows från dess officiella webbplats. Öppna sedan fliken Tillägg (genväg) inifrån själva redigeraren. Ctrl + Skift + X) och sök efter och installera tillägget "Fjärrstyrd – WSL"Det här tillägget låter dig öppna mappar och projekt som finns på din Linux-distribution, med all logik som körs i WSL.

När du har installerat det kan du köra följande kommando från din Ubuntu-terminal:

code .

Detta öppnar VS Code, ansluten till WSL-miljön och med fullständig åtkomst till de verktyg du har installerat där. För att slutföra den visuella integrationen kan du Konfigurera den integrerade VS Code-terminalen att använda samma Nerd-teckensnitt som du valde i Windows Terminal, så att ikonerna också ser bra ut:

{
"terminal.integrated.fontFamily": "DejaVu Sans Mono for Powerline"
}

I filen settings.json I VS Code kan du också ställa in standard Windows-terminalen till din Ubuntu i WSL, genom att konfigurera en profil så här:

"terminal.integrated.profiles.windows": {
"Ubuntu (WSL)": {
"path": "C:\\Windows\\System32\\wsl.exe",
"args": ["-d", "Ubuntu"]
}
},
"terminal.integrated.defaultProfile.windows": "Ubuntu (WSL)"

Och medan du ändå håller på kan du passa på att aktivera automatisk formatering vid sparande, färgläggning av parentespar och andra små förbättringar som gör vardagen roligare i redigeraren.

Automatiserade skript och kompletta WSL2-konfigurationsdatabaser

Även om du kan konfigurera din egen skriptinfrastruktur finns det också möjlighet att förlita dig på färdiga arkiv som automatiserar mycket av arbetetVissa fokuserar på Linux-guider, skript för att installera terminalverktyg (Oh My Zsh, plugins, teman), Conda, GPU-drivrutiner och andra viktiga komponenter i en datavetenskaplig eller webbutvecklingsmiljö.

Tanken bakom dessa arkiv är tydlig: Ett enda kommando kör ett Bash-skript Den uppdaterar distributionen, installerar curl och Node.js vid behov, tar hand om NVM, laddar ner teckensnitt som Nerd Fonts, konfigurerar Zsh med ett tema och en rimlig uppsättning plugins och alias, och lämnar din terminal redo att användas.

Under körningen av dessa skript kommer du att se att du vid flera tillfällen kommer att bli ombedd att ditt administratörslösenord på grund av användningen av sudoDetta är helt normalt, eftersom paket installeras, systemsökvägar ändras och filer kopieras till skyddade platser.

I vissa fall kommer de att be dig att välj den specifika versionen av verktyg som BAT eller LSD (till exempel bat_0.25.0_amd64.deb o lsd_1.1.5_amd64.deb), vilket beror både på vilken version som är tillgänglig på GitHub och på din maskins arkitektur (det vanliga nuförtiden är amd64Se till att välja rätt alternativ för att undvika fel vid inkompatibla paket.

Resultatet av den här typen av skript är en miljö där Zsh har redan en fil .zshrc mycket komplettMed ett tema, plugins, alias för cat/ls, Gitmoji-integration för commits med ikoner när du har ont om inspiration, syntaxmarkering, autokomplettering i Oh My Zsh och andra godsaker. Wow, det är en av de där terminalerna du vill ha på skärmen hela dagen.

För att slutföra anpassningen kan du till och med Justera teman så att endast användarnamnet visas (och värdnamnet döljs) direkt modifiera specifika temafiler, till exempel agnoster.zsh-theme i rutten ~/.oh-my-zsh/themesoch ändrar motsvarande rad till något liknande:

prompt_segment green black "%(!.%{%F{yellow}%}.)%n"

Med allt detta uppnår du att Vilken utvecklare som helst i teamet kan klona konfigurationsförrådet, köra ett kommando och ha samma miljö på bara några minuter. än resten: samma skal, samma tema, samma versioner av basverktyg och samma terminalbeteende, utan felmeddelanden som "det fungerar på min dator" eller "jag kommer inte ihåg vad jag installerade den dagen".

I slutändan innebär det att konfigurera och automatisera en WSL2- och Zsh-miljö att man kombinerar flera delar: en Linux-bas i Windows, en välkonfigurerad terminal som Windows Terminal, ett utökat skal med Oh My Zsh och dess plugins, moderna verktyg som BAT, LSD eller FZF, versionshantering med NVM eller Conda, integration med VS Code via Remote-WSL, samt skript och punktfiler som gör att du kan replikera allt detta på ett tillförlitligt sätt. Om du avsätter lite tid för att finjustera det, kommer du att ha ett ekosystem där det tar minuter att gå från grunden till bekväm programmering istället för hela eftermiddagar som manuellt installerar om saker.