GNU/Linux >> Linux Esercitazione >  >> Linux

L'anno di Linux sul desktop (Windows) - Suggerimenti e trucchi WSL

Ultimamente ho fatto un sacco di lavoro in bash/zsh/fish - Linuxing. Nel caso non lo sapessi, Windows 10 può eseguire Linux ora. Certo, puoi eseguire Linux in una VM, ma è pesante e hai bisogno di una macchina decente. Puoi eseguire una shell in Docker, ma avrai bisogno di Hyper-V e Windows 10 Pro. Puoi persino andare su https://shell.azure.com e ottenere un terminale ovunque:lo faccio sul mio Chromebook.

Ma principalmente eseguo Linux in modo nativo su Windows 10. Puoi andare. Basta aprire PowerShell una volta, come amministratore ed eseguire questo comando e riavviare:

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

Quindi vai su Windows Store e scarica Ubuntu, o Debian, o Kali, o altro.

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

Quello che sta succedendo è che stai eseguendo Linux in modalità utente senza il kernel Linux. Le chiamate di sistema (chiamate di sistema) utilizzate da questi Linux non modificati vengono trasferite su Windows. Fork di un processo Linux? È un pico-processo in Windows e si presenta nel task manager.

Vuoi modificare i file di Windows e modificarli sia in Windows che in Linux? Mantieni i tuoi file/codice in /mnt/c/ e potrai modificarli con altri sistemi operativi. Non utilizzare Windows per "raggiungere il file system Linux". Ci sono draghi.

Una volta che hai installato un Linux (o molti, come me) puoi gestirli e usarli in diversi modi.

Pensi che sia stupido o sciocco? Smetti di leggere e continua a eseguire Linux e ti auguro tutto il meglio. Più potenza per te.

Voglio sapere di più? Vuoi cercare modi nuovi e creativi per ottenere il MEGLIO degli strumenti dell'interfaccia utente di Windows e della riga di comando di Linux? Continuate a leggere, amici.

wslconfig

WSL significa "Sottosistema Windows per Linux". A partire da Windows 10 (versione 1709, ovvero 2017-09, Fall Creators Update. Esegui "Winver" per vedere cosa stai eseguendo), hai un comando chiamato "wslconfig". Provalo. Elenca le distribuzioni che hai e controlla quale si avvia quando digiti "bash".

Controlla di seguito che il mio predefinito per "bash" è Ubuntu 16.04, ma posso eseguire 18.04 manualmente se lo desideri. Guarda come mi sposto da cmd a bash ed esco, quindi torno dentro, senza problemi. Ancora una volta, nessuna 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:~$

Puoi anche reindirizzare le cose ai comandi di Linux collegandoti a wsl o bash in questo modo:

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

Se sei in Windows, eseguendo cmd.exe o powershell.exe, è meglio passare a Linux eseguendo wsl o bash poiché mantiene la directory corrente.

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

Freddo! Ti chiedi qual è quel numero prima del mio prompt? Questo è il mio zucchero nel sangue. Ma questo è un altro post del blog.

wsl.conf

C'è un file in /etc/wsl.conf che ti consente di controllare cose come se il tuo Linux preferito montasse automaticamente le tue unità Windows. Puoi anche controllare cose più avanzate come se Windows genera automaticamente un file hosts o elabora /etc/fstab. Dipende da te!

Distribuzioni

C'è una mezza dozzina di distribuzioni disponibili e altre in arrivo mi è stato detto, ma TU puoi anche creare/confezionare la tua distribuzione Linux per WSL con packager/distro-launcher che è open source su GitHub.

Docker e WSL

Tutti vogliono sapere se è possibile eseguire Docker "nativamente" su WSL. No, è un po' troppo "Inception" e, come accennato, il kernel di Linux non è presente. I binari elf non modificati funzionano bene ma Windows fa il lavoro. MA!

Puoi eseguire Docker per Windows e fare clic su "Esponi daemon su localhost:2375" e poiché Windows e WSL/Linux condividono lo stesso spazio di porta, puoi eseguire il client Docker molto felicemente su WSL.

Dopo che Docker per Windows è in esecuzione in background, installalo in Ubuntu seguendo le normali istruzioni. Quindi aggiorna il tuo .bashrc per forzare il tuo client Docker locale a comunicare con Docker per Windows:

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

Ci sono molti tutorial "Docker su WSL" molto più lunghi e più dettagliati, quindi se desideri maggiori dettagli tecnici, ti consiglio di dargli un'occhiata! Se usi molti Volume Mount, ho trovato molto utile il resoconto di Nick.

Ora, quando eseguo "immagini docker" o qualsiasi altra cosa da WSL, sto parlando con Docker per Windows. Funziona alla grande, esattamente come ti aspetteresti e condividi immagini e contenitori in entrambi i mondi.

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

Favoloso.

Codifica e modifica di file

Ho bisogno di colpire di nuovo questo punto. Non modificare i file Linux utilizzando app e strumenti di Windows. Tuttavia, puoi condividere file e modificarli sia con Windows che con Linux mantenendo il codice sul filesystem di Windows.

Ad esempio, il mio lavoro è su c:\github, quindi è anche su /mnt/c/github. Uso il codice di Visual Studio e modifico il mio codice lì (o vim, da WSL) ed eseguo il codice da Linux. Posso anche eseguire bash/wsl da Visual Studio Code usando il suo terminale integrato. Basta premere "Ctrl+P" in Visual Studio Code e digitare "Seleziona shell predefinita".

Su Windows 10 Insiders Edition, Windows ora ha un'interfaccia utente chiamata "Sets" che ti darà prompt dei comandi a schede. Qui sto installando Ruby on Rails in Ubuntu accanto ad altri due prompt:Cmd e PowerShell. Questo è tutto Windows predefinito, nessun componente aggiuntivo o programma aggiuntivo per questa esperienza.

Sto usando Rails come esempio qui perché il supporto di Ruby/Rails su Windows con estensioni native è stata storicamente una sfida. C'è stato un gruppo di persone che eroicamente (e ingrato) ha cercato di far funzionare bene Ruby on Rails su Windows, ma oggi non ce n'è bisogno. Funziona benissimo su Linux sotto Windows.

Posso anche eseguire app o strumenti Windows da Linux purché utilizzi il loro nome completo con estensione (come code.exe) o imposti un alias.

Qui ho creato un "codice" alias che esegue il codice nella directory corrente, quindi ho VS Code in esecuzione per modificare la mia nuova app Rails.

Posso anche combinare e abbinare Windows e Linux durante il piping. Questo probabilmente renderà felici le persone di Windows e offenderà profondamente le persone di Linux. Oppure, se sei aconfessionale come me, lo scaverai!

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

Ancora un promemoria:modifica dei file che non si trovano in /mnt/<x> con un'applicazione Windows in WSL non è supportato. Ma modifica le cose su /mnt/x con qualunque cosa e sei a posto.

Condivisione Condivisione Condivisione

Se hai Windows 10 Build 17064 o versioni successive (esegui ver da Windows o "cmd.exe /c /ver" da Linux) e puoi persino condividere una variabile di ambiente!

131 → $ cmd.exe /c ver

Microsoft Windows [Version 10.0.17672.1000]

Esiste una variabile di ambiente speciale chiamata "WSLENV" che è un elenco delimitato da due punti di variabili di ambiente che dovrebbero essere incluse quando si avviano processi WSL da processi Win32 o Win32 da WSL. Fondamentalmente gli dai un elenco di variabili che vuoi vagare/condividere. Questo semplificherà cose come le dual build multipiattaforma. Puoi anche aggiungere un flag /p e tradurrà automaticamente i percorsi tra lo stile c:\windows e lo stile /mnt/c/windows.

Dai un'occhiata all'esempio sul blog WSL su come condividere un GOPATH e utilizzare VSCode in Windows ed eseguire Go in entrambi i posti.

Puoi anche utilizzare una speciale riga di comando incorporata chiamata "wslpath" per tradurre i nomi dei percorsi tra Windows e WSL. Ciò è utile se condividi script bash, esegui script multipiattaforma (ho script PowerShell Core che vengono eseguiti in entrambi i posti) o devi semplicemente cambiare i tipi di percorso a livello di codice.

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

Non esiste ancora una pagina man per wslpath, ma copiata da questo problema di GitHub, ecco il succo:

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 ‘\\’

Un'ultima nota, una volta installata una distribuzione Linux da Windows Store, sta a te tenerla aggiornata. Windows Store non eseguirà "apt upgrade" né toccherà mai i tuoi Linux una volta che sono stati installati. Inoltre, puoi avere Ubuntu 1604 e 1804 installati fianco a fianco e non danneggerà nulla.

Link correlati

  • Configurazione di un ambiente di sviluppo brillante all'interno di Linux su Windows 10
  • Terminale tosto:aggiornamento WSL, macOS e Ubuntu dotfiles!!! di Jessica Deen

Stai usando WSL?

Sponsor: Dai un'occhiata a JetBrains Rider:un IDE .NET multipiattaforma. Modifica, refactoring, verifica ed esegui il debug di applicazioni ASP.NET, .NET Framework, .NET Core, Xamarin o Unity. Scopri di più e scarica una versione di prova di 30 giorni!


Linux
  1. Suggerimenti e trucchi per l'utilizzo di CUPS per la stampa con Linux

  2. Come accedere ai filesystem Linux in Windows 10 e WSL 2

  3. Suggerimenti e trucchi per le variabili di ambiente Linux

  4. Suggerimenti e trucchi per Linux .htaccess

  5. Determina la versione del sistema operativo, Linux e Windows da Powershell

Un ragazzo Windows in un mondo Linux:YaST e il desktop

Docker Desktop per WSL 2 integra Windows 10 e Linux ancora più da vicino

Fantastici suggerimenti e trucchi per WSL (sottosistema Windows per Linux) che tu (o io) non sapevi fossero possibili

Sviluppo Web e Tecniche Avanzate con Linux su Windows (WSL)

Ubuntu ora in Windows Store:aggiornamenti a Linux su Windows 10 e suggerimenti importanti

I 30 migliori software di contabilità e finanza per desktop Linux