GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das Jahr von Linux auf dem (Windows-)Desktop - WSL-Tipps und Tricks

Ich habe in letzter Zeit eine Menge Arbeit in bash/zsh/fish gemacht - Linuxing. Falls Sie es nicht wussten, Windows 10 kann jetzt Linux ausführen. Sicher, Sie können Linux in einer VM ausführen, aber es ist schwer und Sie brauchen eine anständige Maschine. Sie können eine Shell unter Docker ausführen, benötigen jedoch Hyper-V und Windows 10 Pro. Sie können sogar zu https://shell.azure.com gehen und überall ein Terminal bekommen – ich mache das auf meinem Chromebook.

Aber meistens führe ich Linux nativ auf Windows 10 aus. Sie können gehen. Öffnen Sie PowerShell einfach einmal als Administrator und führen Sie diesen Befehl aus und starten Sie neu:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Gehen Sie dann zum Windows Store und laden Sie Ubuntu oder Debian oder Kali oder was auch immer herunter.

  • Ubuntu
  • OpenSUSE
  • SLES
  • Kali-Linux
  • Debian GNU/Linux

Was passiert ist, dass Sie Linux im Benutzermodus ohne den Linux-Kernel ausführen. Die Syscalls (Systemaufrufe), die diese unmodifizierten Linuxe verwenden, werden an Windows vermittelt. Einen Linux-Prozess forken? Es ist ein Pico-Prozess in Windows und wird im Task-Manager angezeigt.

Möchten Sie Windows-Dateien bearbeiten und sie sowohl unter Windows als auch unter Linux bearbeiten? Bewahren Sie Ihre Dateien/Code in /mnt/c/ auf und Sie können sie mit anderen Betriebssystemen bearbeiten. Verwenden Sie Windows nicht, um „in das Linux-Dateisystem einzudringen“. Es gibt Drachen.

Sobald Sie ein Linux installiert haben (oder viele, wie ich es tue), können Sie es verwalten und auf verschiedene Weise verwenden.

Denken Sie, das ist dumm oder dumm? Hör auf zu lesen und mach weiter mit Linux und ich wünsche dir alles Gute. Mehr Leistung für Sie.

Möchten Sie mehr wissen? Möchten Sie nach neuen und kreativen Möglichkeiten suchen, wie Sie das BESTE der Windows-Benutzeroberflächen- und Linux-Befehlszeilentools erhalten können? Lies weiter, Freunde.

wslconfig

WSL bedeutet „Windows-Subsystem für Linux“. Beginnend mit Windows 10 (Version 1709 – das ist 2017-09, das Fall Creators Update. Führen Sie „Winver“ aus, um zu sehen, was Sie ausführen), Sie haben einen Befehl namens „wslconfig“. Versuch es. Es listet Ihre Distributionen auf und steuert, welche gestartet wird, wenn Sie „bash“ eingeben.

Sehen Sie sich unten an, dass mein Standard für "bash" Ubuntu 16.04 ist, aber ich kann 18.04 manuell ausführen, wenn ich möchte. Sehen Sie, wie ich von cmd in bash übergehe und aussteige und dann nahtlos wieder hineingehe. Wieder keine VM.

C:\>wslconfig /l /all
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>wslconfig /l
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-18.04
openSUSE-42
Debian
kali-rolling

C:\>bash
128 → $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
128 → $ exit
logout

C:\>ubuntu1804
scott@SONOFHEXPOWER:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
scott@SONOFHEXPOWER:~$

Sie können Dinge auch in Linux-Befehle leiten, indem Sie wie folgt an wsl oder bash weiterleiten:

C:\Users\scott\Desktop>dir | wsl grep "poop"
05/18/2018 04:23 PM <DIR> poop

Wenn Sie in Windows cmd.exe oder powershell.exe ausführen, wechseln Sie am besten zu Linux, indem Sie wsl oder bash ausführen, da das aktuelle Verzeichnis beibehalten wird.

C:\Users\scott\Desktop>bash
129 → $ pwd
/mnt/c/Users/scott/Desktop
129 → $ exit
logout

Kühl! Sie fragen sich, was diese Nummer vor meiner Eingabeaufforderung ist? Das ist mein Blutzucker. Aber das ist ein anderer Blogbeitrag.

wsl.conf

Es gibt eine Datei in /etc/wsl.conf, mit der Sie beispielsweise steuern können, ob Ihr bevorzugtes Linux Ihre Windows-Laufwerke automatisch einbindet. Sie können auch erweiterte Dinge steuern, z. B. ob Windows automatisch eine Hosts-Datei generiert oder /etc/fstab verarbeitet. Es liegt an Ihnen!

Distributionen

Mir wurde gesagt, dass ein halbes Dutzend Distributionen verfügbar sind und weitere kommen, aber SIE können auch Ihre eigene Linux-Distribution für WSL mit Packager/Distro-Launcher erstellen/paketieren, die Open Source bei GitHub ist.

Docker und WSL

Jeder möchte wissen, ob Sie Docker „nativ“ auf WSL ausführen können. Nein, das ist ein bisschen zu "Inception", und wie gesagt, der Linux Kernel ist nicht vorhanden. Die unmodifizierten Elf-Binärdateien funktionieren gut, aber Windows erledigt die Arbeit. ABER!

Sie können Docker für Windows ausführen und auf „Expose daemon on localhost:2375“ klicken, und da Windows und WSL/Linux denselben Portbereich gemeinsam nutzen, KÖNNEN Sie den Docker-Client sehr gerne auf WSL ausführen.

Nachdem Sie Docker für Windows im Hintergrund ausgeführt haben, installieren Sie es in Ubuntu gemäß den regulären Anweisungen. Aktualisieren Sie dann Ihre .bashrc-Datei, um Ihren lokalen Docker-Client zu zwingen, mit Docker für Windows zu kommunizieren:

echo "export DOCKER_HOST=tcp://0.0.0.0:2375" >> ~/.bashrc && source ~/.bashrc

Es gibt viele viel längere und detailliertere „Docker on WSL“-Tutorials. Wenn Sie also mehr technische Details wünschen, empfehle ich Ihnen, sie sich anzusehen! Wenn Sie viele Volume Mounts verwenden, fand ich Nicks Beschreibung sehr nützlich.

Wenn ich jetzt "Docker-Images" oder was auch immer von WSL ausführe, spreche ich mit Docker für Windows. Funktioniert hervorragend, genau wie erwartet, und Sie teilen Bilder und Container in beiden Welten.

128 → $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
podcast test 1bd29d0223da 9 days ago 2.07GB
podcast latest e9dd366f0375 9 days ago 271MB
microsoft/dotnet-samples aspnetapp 80a65a6b6f95 11 days ago 258MB
microsoft/dotnet-samples dotnetapp b3d7f438bad3 2 weeks ago 180MB
microsoft/dotnet 2.1-sdk 1f63052e44c2 2 weeks ago 1.72GB
microsoft/dotnet 2.1-aspnetcore-runtime 083ca6a642ea 2 weeks ago 255MB
microsoft/dotnet 2.1-runtime 6d25f57ea9d6 2 weeks ago 180MB
microsoft/powershell latest 708fb186511e 2 weeks ago 318MB
microsoft/azure-cli latest 92bbcaff2f87 3 weeks ago 423MB
debian jessie 4eb8376dc2a3 4 weeks ago 127MB
microsoft/dotnet-samples latest 4070d1d1e7bb 5 weeks ago 219MB
docker4w/nsenter-dockerd latest cae870735e91 7 months ago 187kB
glennc/fancypants latest e1c29c74e891 20 months ago 291MB

Fabelhaft.

Kodieren und Bearbeiten von Dateien

Ich muss diesen Punkt noch einmal ansprechen. Ändern Sie Linux-Dateien nicht mit Windows-Apps und -Tools. Sie KÖNNEN jedoch Dateien freigeben und sie sowohl mit Windows als auch mit Linux bearbeiten, indem Sie den Code im Windows-Dateisystem belassen.

Meine Arbeit befindet sich beispielsweise unter c:\github, also auch unter /mnt/c/github. Ich verwende Visual Studio-Code und bearbeite meinen Code dort (oder vim innerhalb von WSL) und führe den Code unter Linux aus. Ich kann sogar bash/wsl innerhalb von Visual Studio Code über das integrierte Terminal ausführen. Drücken Sie einfach "Strg+P" in Visual Studio Code und geben Sie "Standard-Shell auswählen" ein.

In der Windows 10 Insiders Edition verfügt Windows jetzt über eine Benutzeroberfläche namens „Sets“, die Ihnen Eingabeaufforderungen mit Registerkarten bietet. Hier installiere ich Ruby on Rails in Ubuntu neben zwei anderen Eingabeaufforderungen - Cmd und PowerShell. Dies ist alles Standard-Windows – keine Add-Ons oder zusätzliche Programme für dieses Erlebnis.

Ich verwende hier Rails als Beispiel, da die Unterstützung von Ruby/Rails unter Windows mit nativen Erweiterungen in der Vergangenheit eine Herausforderung war. Es gab eine Gruppe von Leuten, die heldenhaft (und undankbar) versuchten, Ruby on Rails unter Windows gut zum Laufen zu bringen, aber heute besteht keine Notwendigkeit mehr. Es läuft hervorragend auf Linux unter Windows.

Ich kann auch Windows-Apps oder -Tools unter Linux ausführen, solange ich ihren vollständigen Namen mit Erweiterung (wie code.exe) verwende oder einen Alias ​​festlege.

Hier habe ich einen Alias-"Code" erstellt, der Code im aktuellen Verzeichnis ausführt, und dann habe ich VS-Code ausgeführt, der meine neue Rails-App bearbeitet.

Ich kann beim Piping sogar Windows und Linux mischen und anpassen. Dies wird Windows-Leute wahrscheinlich glücklich machen und Linux-Leute zutiefst beleidigen. Oder, wenn Sie konfessionslos sind wie ich, werden Sie es mögen!

$ ipconfig.exe | grep IPv4 | cut -d: -f2
172.21.240.1
10.159.21.24

Nochmals zur Erinnerung:Ändern von Dateien, die sich nicht unter /mnt/<x> befinden mit einer Windows-Anwendung in WSL wird nicht unterstützt. Aber bearbeite Dinge auf /mnt/x mit was auch immer und du bist cool.

Teilen Teilen Teilen

Wenn Sie Windows 10 Build 17064 oder neuer haben (führen Sie ver von Windows oder "cmd.exe /c /ver" von Linux aus) und Sie können sogar eine Umgebungsvariable freigeben!

131 → $ cmd.exe /c ver

Microsoft Windows [Version 10.0.17672.1000]

Es gibt eine spezielle Umgebungsvariable namens „WSLENV“, bei der es sich um eine durch Doppelpunkte getrennte Liste von Umgebungsvariablen handelt, die beim Starten von WSL-Prozessen aus Win32 oder Win32-Prozessen aus WSL enthalten sein sollten. Grundsätzlich geben Sie ihm eine Liste von Variablen, die Sie durchstreifen/teilen möchten. Dies erleichtert Dinge wie plattformübergreifende Dual-Builds. Sie können sogar ein /p-Flag hinzufügen und es übersetzt automatisch Pfade zwischen c:\windows-Stil und /mnt/c/windows-Stil.

Sehen Sie sich das Beispiel im WSL-Blog an, wie Sie einen GOPATH teilen und VSCode in Windows verwenden und an beiden Orten Go ausführen.

Sie können auch eine spezielle integrierte Befehlszeile namens „wslpath“ verwenden, um Pfadnamen zwischen Windows und WSL zu übersetzen. Dies ist nützlich, wenn Sie Bash-Skripts freigeben, plattformübergreifende Skripts ausführen (ich habe PowerShell Core-Skripts, die an beiden Orten ausgeführt werden) oder einfach nur Pfadtypen programmgesteuert wechseln müssen.

131 → $ wslpath "d:\github\hanselminutes-core"
/mnt/d/github/hanselminutes-core
131 → $ wslpath "c:\Users\scott\Desktop"
/mnt/c/Users/scott/Desktop

Es gibt noch keine Manpage für wslpath, aber kopiert von dieser GitHub-Ausgabe, hier ist das Wesentliche:

wslpath usage:
-a force result to absolute path format
-u translate from a Windows path to a WSL path (default)
-w translate from a WSL path to a Windows path
-m translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

Eine letzte Anmerkung:Sobald Sie eine Linux-Distribution aus dem Windows Store installiert haben, liegt es an Ihnen, sie auf dem neuesten Stand zu halten. Der Windows Store wird kein "apt upgrade" ausführen oder jemals Ihre Linuxe berühren, sobald sie installiert wurden. Außerdem können Sie Ubuntu 1604 und 1804 nebeneinander installieren und es schadet nichts.

Verwandte Links

  • Einrichten einer glänzenden Entwicklungsumgebung innerhalb von Linux unter Windows 10
  • Badass Terminal:Update der WSL-, macOS- und Ubuntu-Dotfiles!!! von Jessica Deen

Verwenden Sie WSL?

Sponsor: Sehen Sie sich JetBrains Rider an:eine plattformübergreifende .NET-IDE. Bearbeiten, Refactoring, Testen und Debuggen von ASP.NET-, .NET Framework-, .NET Core-, Xamarin- oder Unity-Anwendungen. Erfahren Sie mehr und laden Sie eine 30-Tage-Testversion herunter!


Linux
  1. Tipps und Tricks zur Verwendung von CUPS zum Drucken unter Linux

  2. Zugriff auf Linux-Dateisysteme in Windows 10 und WSL 2

  3. Tipps und Tricks zu Linux-Umgebungsvariablen

  4. Linux .htaccess Tipps und Tricks

  5. Kali-Linux im Windows App Store

Ein Windows-Typ in einer Linux-Welt:YaST und der Desktop

Docker Desktop für WSL 2 integriert Windows 10 und Linux noch enger

Coole Tipps und Tricks zu WSL (Windows Subsystem for Linux), von denen Sie (oder ich) nicht wussten, dass sie möglich sind

Webentwicklung und fortgeschrittene Techniken mit Linux unter Windows (WSL)

Ubuntu jetzt im Windows Store:Updates für Linux unter Windows 10 und wichtige Tipps

Die 30 besten Buchhaltungs- und Finanzsoftware für Linux Desktop