Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Er zijn een aantal overwegingen waarmee u rekening moet houden bij het werken tussen Windows- en Linux-bestandssystemen. In deze handleiding hebben we een aantal voorbeelden van interoperabiliteitsondersteuning beschreven voor het combineren van Opdrachten op basis van Windows en Linux.
Bestandsopslag en prestaties in bestandssystemen
Wij raden aan om niet met uw bestanden tussen verschillende besturingssystemen te werken, tenzij u daar een specifieke reden voor hebt. Sla voor de snelste snelheid uw bestanden op in het WSL-bestandssysteem als u werkt in een Linux-opdrachtregel (Ubuntu, OpenSUSE, enzovoort). Als u werkt in een Windows-opdrachtregel (PowerShell, opdrachtprompt), slaat u uw bestanden op in het Windows-bestandssysteem.
Bijvoorbeeld wanneer u uw WSL-projectbestanden opslaat:
- De hoofdmap van het Linux-bestandssysteem gebruiken:
/home/<user name>/Project - Niet de hoofdmap van het Windows-bestandssysteem:
/mnt/c/Users/<user name>/Project$ofC:\Users\<user name>\Project
Wanneer u /mnt/ in het bestandspad van een WSL-opdrachtregel ziet, betekent dit dat u werkt vanaf een gekoppelde schijf. Het Windows-bestandssysteem C:\ schijf (C:\Users\<user name>\Project) ziet er dus als volgt uit wanneer het is aangekoppeld in een WSL-opdrachtregel: /mnt/c/Users/<user name>/Project$. Het is mogelijk om uw projectbestanden op een gekoppeld station op te slaan, maar uw prestatiesnelheid zal verbeteren als u ze rechtstreeks op het \\wsl$ station opslaat.
Bekijk uw huidige map in Windows Verkenner
U kunt de map weergeven waarin uw bestanden zijn opgeslagen door De Verkenner van Windows te openen vanaf de opdrachtregel, met behulp van:
explorer.exe .
U kunt ook het commando gebruiken: powershell.exe /c start ., zorg ervoor dat u de punt aan het einde van het commando toevoegt om de huidige map te openen.
Als u alle beschikbare Linux-distributies en hun hoofdbestandssystemen in Windows Verkenner wilt weergeven, voert u in de adresbalk het volgende in: \\wsl$
Gevoeligheid voor hoofdletters en kleine letters in bestandsnamen en mappen
Hoofdlettergevoeligheid bepaalt of hoofdletters (FOO.txt) en kleine letters (foo.txt) worden verwerkt als afzonderlijke (hoofdlettergevoelig) of gelijkwaardig (hoofdletterongevoelig) in een bestandsnaam of map. Windows- en Linux-bestandssystemen verwerken hoofdlettergevoeligheid op verschillende manieren: Windows is niet hoofdlettergevoelig en Linux is hoofdlettergevoelig. Meer informatie over het aanpassen van hoofdlettergevoeligheid, met name bij het koppelen van schijven met WSL, vindt u in het artikel Hoe u hoofdlettergevoeligheid aanpast .
Interoperabiliteit tussen Windows- en Linux-opdrachten
Windows- en Linux-hulpprogramma's en -opdrachten kunnen door elkaar worden gebruikt met WSL.
- Voer Windows-hulpprogramma's (bijvoorbeeld notepad.exe) uit vanaf een Linux-opdrachtregel (bijvoorbeeld. Ubuntu).
- Voer Linux-hulpprogramma's (bijvoorbeeld grep) uit vanaf een Windows-opdrachtregel (ie. PowerShell).
- Omgevingsvariabelen delen tussen Linux en Windows. (Build 17063+)
Linux-hulpprogramma's uitvoeren vanaf een Windows-opdrachtregel
Voer binaire Linux-bestanden uit vanaf de Windows-opdrachtprompt (CMD) of PowerShell met ( wsl <command> of wsl.exe <command>).
Voorbeeld:
C:\temp> wsl ls -la
<- contents of C:\temp ->
Binaire bestanden die op deze manier worden aangeroepen:
- Gebruik dezelfde werkmap als de huidige CMD- of PowerShell-prompt.
- Uitvoeren als de standaardgebruiker van WSL.
- Dezelfde Beheerdersrechten voor Windows hebben als het aanroepende proces en de terminal.
De Volgende Linux-opdracht wsl (of wsl.exe) wordt verwerkt zoals elke opdracht die wordt uitgevoerd in WSL. Zaken zoals sudo, piping en bestandsomleiding werken.
Voorbeeld van sudo om uw standaard Linux-distributie bij te werken:
C:\temp> wsl sudo apt-get update
De standaardgebruikersnaam van de Linux-distributie wordt vermeld na het uitvoeren van deze opdracht en u wordt gevraagd om uw wachtwoord. Nadat u uw wachtwoord correct hebt ingevoerd, worden updates door uw distributie gedownload.
Linux- en Windows-opdrachten combineren
Hier volgen enkele voorbeelden van het combineren van Linux- en Windows-opdrachten met behulp van PowerShell.
Als u de Linux-opdracht ls -la wilt gebruiken om bestanden en de PowerShell-opdracht findstr weer te geven om de resultaten te filteren op woorden met 'git', combineert u de opdrachten:
wsl ls -la | findstr "git"
Als u de PowerShell-opdracht dir wilt gebruiken om bestanden en de Linux-opdracht grep weer te geven om de resultaten te filteren op woorden die 'git' bevatten, combineert u de opdrachten:
C:\temp> dir | wsl grep git
Als u de Linux-opdracht ls -la wilt gebruiken om bestanden en de PowerShell-opdracht > out.txt weer te geven om die lijst af te drukken op een tekstbestand met de naam 'out.txt', combineert u de opdrachten:
C:\temp> wsl ls -la > out.txt
De opdrachten die in wsl.exe worden ingevoerd, worden zonder wijziging doorgestuurd naar het WSL-proces. Bestandspaden moeten worden opgegeven in de WSL-indeling.
Als u de Linux-opdracht ls -la wilt gebruiken om bestanden in het pad van het /proc/cpuinfo Linux-bestandssysteem weer te geven, gebruikt u PowerShell:
C:\temp> wsl ls -la /proc/cpuinfo
Als u de Linux-opdracht ls -la wilt gebruiken om bestanden in het Pad van het C:\Program Files Windows-bestandssysteem weer te geven, gebruikt u PowerShell:
C:\temp> wsl ls -la "/mnt/c/Program Files"
Windows-hulpprogramma's uitvoeren vanuit Linux
WSL kan Windows-hulpprogramma's rechtstreeks vanaf de WSL-opdrachtregel uitvoeren met behulp van [tool-name].exe. Bijvoorbeeld: notepad.exe.
Toepassingen worden op deze manier uitgevoerd met de volgende eigenschappen:
- Behoud de werkmap als de WSL-opdrachtprompt (voor het grootste deel - uitzonderingen worden hieronder uitgelegd).
- Dezelfde machtigingsrechten hebben als het WSL-proces.
- Uitvoeren als de actieve Windows-gebruiker.
- Wordt weergegeven in Windows Taakbeheer alsof deze rechtstreeks vanuit de CMD-prompt wordt uitgevoerd.
Uitvoerbare Windows-programma's die in WSL worden uitgevoerd, worden op dezelfde manier afgehandeld als systeemeigen Linux-uitvoerbare programma's: piping, omleidingen en zelfs achtergrondprocessen werken zoals verwacht.
Als u het Windows-hulpprogramma ipconfig.exewilt uitvoeren, gebruikt u het Linux-hulpprogramma grep om de IPv4-resultaten te filteren en gebruikt u het Linux-hulpprogramma cut om de kolomvelden te verwijderen uit een Linux-distributie (bijvoorbeeld Ubuntu):
ipconfig.exe | grep IPv4 | cut -d: -f2
Laten we een voorbeeld van een combinatie van Windows- en Linux-opdrachten proberen. Open uw Linux-distributie (bijvoorbeeld. Ubuntu) en maak een tekstbestand: touch foo.txt. Gebruik nu de Linux-opdracht ls -la om de directe bestanden en de bijbehorende gegevens weer te geven, plus het Windows PowerShell-hulpprogramma findstr.exe om de resultaten te filteren, zodat alleen uw foo.txt bestand wordt weergegeven in de resultaten:
ls -la | findstr.exe foo.txt
Windows-hulpprogramma's moeten de bestandsextensie bevatten, overeenkomen met het hoofdlettergebruik en uitvoerbaar zijn. Niet-uitvoerbare bestanden, inclusief batchscripts. Systeemeigen CMD-opdrachten zoals dir kunnen met de opdracht cmd.exe /C worden uitgevoerd.
Geef bijvoorbeeld de inhoud van uw Windows-bestandssysteem C:\ map weer door het volgende in te voeren:
cmd.exe /C dir
Of gebruik de ping opdracht om een echoaanvraag naar de microsoft.com website te verzenden:
ping.exe www.microsoft.com
Parameters worden doorgegeven aan het binaire Windows-bestand, ongewijzigd. Als voorbeeld wordt de volgende opdracht geopend C:\temp\foo.txt in notepad.exe:
notepad.exe "C:\temp\foo.txt"
Dit werkt ook:
notepad.exe C:\\temp\\foo.txt
Omgevingsvariabelen delen tussen Windows en WSL met WSLENV
WSL en Windows delen een speciale omgevingsvariabele, WSLENV die is gemaakt om Windows- en Linux-distributies te overbruggen die worden uitgevoerd op WSL.
Eigenschappen van WSLENV variabele:
- Het wordt gedeeld; deze bestaat in zowel Windows- als WSL-omgevingen.
- Het is een lijst met omgevingsvariabelen die u kunt delen tussen Windows en WSL.
- Het kan omgevingsvariabelen opmaken om goed te werken in Windows en WSL.
- Het kan helpen bij de interactie tussen WSL en Win32.
Opmerking
Vóór 17063 was PATH alleen de Windows-omgevingsvariabele waartoe WSL toegang had (zodat u Win32-uitvoerbare bestanden kunt starten onder WSL). Vanaf 17063 wordt WSLENV ondersteund.
WSLENV is hoofdlettergevoelig.
WSLENV-vlaggen
Er zijn vier vlaggen beschikbaar WSLENV om te beïnvloeden hoe de omgevingsvariabele wordt vertaald.
WSLENV Vlaggen:
-
/p- vertaalt het pad tussen WSL-/Linux-stijlpaden en Win32-paden. -
/l- geeft aan dat de omgevingsvariabele een lijst met paden is. -
/u- geeft aan dat deze omgevingsvariabele alleen moet worden opgenomen bij het uitvoeren van WSL vanuit Win32. -
/w- geeft aan dat deze omgevingsvariabele alleen moet worden opgenomen bij het uitvoeren van Win32 vanuit WSL.
Vlaggen kunnen indien nodig worden gecombineerd.
Lees meer over WSLENV, waaronder veelgestelde vragen en voorbeelden van het instellen van de waarde van WSLENV op een samenvoeging van andere vooraf gedefinieerde omgevingsvariabelen, elk achtervoegsel met een slash gevolgd door vlaggen om op te geven hoe de waarde moet worden vertaald en variabelen door te geven met een script. Dit artikel bevat ook een voorbeeld voor het instellen van een ontwikkelomgeving met de programmeertaal Go, geconfigureerd voor het delen van een GOPATH tussen WSL en Win32.
Interoperabiliteit uitschakelen
Gebruikers kunnen de mogelijkheid om Windows-hulpprogramma's uit te voeren voor één WSL-sessie uitschakelen door de volgende opdracht uit te voeren als root:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
Als u binaire Windows-bestanden opnieuw wilt inschakelen, sluit u alle WSL-sessies af en voert u bash.exe opnieuw uit of voert u de volgende opdracht uit als root:
echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
Het uitschakelen van interop blijft niet bestaan tussen WSL-sessies. Interop wordt opnieuw ingeschakeld wanneer een nieuwe sessie wordt gestart.
Windows Subsystem for Linux