GNU/Linux >> Tutoriales Linux >  >> Linux

El año de Linux en el escritorio (Windows) - Consejos y trucos de WSL

He estado trabajando mucho en bash/zsh/fish últimamente - Linuxing. En caso de que no lo supiera, Windows 10 puede ejecutar Linux ahora. Claro, puede ejecutar Linux en una máquina virtual, pero es pesado y necesita una máquina decente. Puede ejecutar un shell en Docker, pero necesitará Hyper-V y Windows 10 Pro. Incluso puede ir a https://shell.azure.com y obtener una terminal en cualquier lugar. Hago esto en mi Chromebook.

Pero sobre todo ejecuto Linux de forma nativa en Windows 10. Puedes irte. Simplemente abra PowerShell una vez, como administrador, ejecute este comando y reinicie:

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

Luego diríjase a la tienda de Windows y descargue Ubuntu, Debian, Kali o lo que sea.

  • Ubuntu
  • Abrir SUSE
  • SLES
  • Kali Linux
  • Debian GNU/Linux

Lo que sucede es que está ejecutando Linux en modo de usuario sin el kernel de Linux. Las syscalls (llamadas al sistema) que utilizan estos Linux no modificados se transfieren a Windows. ¿Bifurcar un proceso de Linux? Es un pico-proceso en Windows y aparece en el administrador de tareas.

¿Quiere editar archivos de Windows y editarlos tanto en Windows como en Linux? Mantenga sus archivos/código en /mnt/c/ y puede editarlos con otro sistema operativo. No use Windows para "acceder al sistema de archivos de Linux". Hay dragones.

Una vez que tenga un Linux instalado (o muchos, como yo) puede administrarlos y usarlos de varias maneras.

¿Crees que esto es estúpido o tonto? Deje de leer y siga ejecutando Linux y le deseo todo lo mejor. Más poder para ti.

¿Quieres saber más? ¿Quiere buscar formas nuevas y creativas de obtener lo MEJOR de la interfaz de usuario de Windows y las herramientas de línea de comandos de Linux? Siga leyendo, amigos.

wslconfig

WSL significa "Subsistema de Windows para Linux". Comenzando con Windows 10 (versión 1709, es decir, 2017-09, Fall Creators Update. Ejecute "Winver" para ver lo que está ejecutando), tiene un comando llamado "wslconfig". Pruébalo. Enumera las distribuciones que tiene y controla cuál comienza cuando escribe "bash".

Vea a continuación que mi predeterminado para "bash" es Ubuntu 16.04, pero puedo ejecutar 18.04 manualmente si lo deseo. Vea cómo me muevo de cmd a bash y salgo, luego vuelvo a entrar, sin problemas. Nuevamente, no hay máquina virtual.

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:~$

También puede canalizar cosas a los comandos de Linux canalizándolos a wsl o bash de esta manera:

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

Si está en Windows, ejecutando cmd.exe o powershell.exe, es mejor pasar a Linux ejecutando wsl o bash, ya que mantiene el directorio actual.

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

¡Enfriar! ¿Se pregunta cuál es ese número antes de mi aviso? Ese es mi nivel de azúcar en la sangre. Pero esa es otra publicación de blog.

wsl.conf

Hay un archivo en /etc/wsl.conf que le permite controlar cosas como si su Linux de elección monta automáticamente sus unidades de Windows. También puede controlar cosas más avanzadas, como si Windows genera automáticamente un archivo host o procesa /etc/fstab. ¡Depende de ti!

Distribuciones

Hay media docena de distribuciones disponibles y me han dicho que vendrán más, pero TÚ también puedes crear/empaquetar tu propia distribución de Linux para WSL con empaquetador/distro-launcher que es de código abierto en GitHub.

Docker y WSL

Todos quieren saber si puede ejecutar Docker "de forma nativa" en WSL. No, eso es demasiado "Inception" y, como se mencionó, el kernel de Linux no está presente. Los binarios elf no modificados funcionan bien, pero Windows hace el trabajo. ¡PERO!

Puede ejecutar Docker para Windows y hacer clic en "Exponer demonio en localhost:2375" y dado que Windows y WSL/Linux comparten el mismo espacio de puerto, PUEDE ejecutar el cliente de Docker sin problemas en WSL.

Después de ejecutar Docker para Windows en segundo plano, instálelo en Ubuntu siguiendo las instrucciones habituales. Luego actualice su .bashrc para obligar a su cliente docker local a comunicarse con Docker para Windows:

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

Hay muchos tutoriales de "Docker en WSL" mucho más extensos y con más detalles, por lo que si desea obtener más detalles técnicos, ¡lo animo a que los consulte! Si usa muchos montajes de volumen, el artículo de Nick me resultó muy útil.

Ahora, cuando ejecuto "imágenes acoplables" o lo que sea desde WSL, estoy hablando con Docker para Windows. Funciona muy bien, exactamente como cabría esperar y está compartiendo imágenes y contenedores en ambos mundos.

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

Fabuloso.

Codificación y edición de archivos

Necesito llegar a este punto de nuevo. No cambie los archivos de Linux usando aplicaciones y herramientas de Windows. Sin embargo, PUEDE compartir archivos y editarlos con Windows y Linux manteniendo el código en el sistema de archivos de Windows.

Por ejemplo, mi trabajo está en c:\github, por lo que también está en /mnt/c/github. Uso el código de Visual Studio y edito mi código allí (o vim, desde WSL) y ejecuto el código desde Linux. Incluso puedo ejecutar bash/wsl desde Visual Studio Code usando su terminal integrado. Simplemente presione "Ctrl+P" en Visual Studio Code y escriba "Seleccionar shell predeterminado".

En la edición Insiders de Windows 10, Windows ahora tiene una interfaz de usuario llamada "Conjuntos" que le dará indicaciones de comando con pestañas. Aquí estoy instalando Ruby on Rails en Ubuntu junto a otras dos indicaciones:Cmd y PowerShell. Todo esto es Windows predeterminado, sin complementos ni programas adicionales para esta experiencia.

Estoy usando Rails como ejemplo porque la compatibilidad con Ruby/Rails en Windows con extensiones nativas históricamente ha sido un desafío. Ha habido un grupo de personas intentando heroicamente (y sin agradecer) que Ruby on Rails funcione bien en Windows, pero hoy no hay necesidad. Funciona muy bien en Linux bajo Windows.

También puedo ejecutar aplicaciones o herramientas de Windows desde Linux siempre que use su nombre completo con extensión (como code.exe) o configure un alias.

Aquí hice un "código" de alias que ejecuta el código en el directorio actual, luego tengo VS Code ejecutándose editando mi nueva aplicación Rails.

Incluso puedo mezclar y combinar Windows y Linux al canalizar. Esto probablemente hará feliz a la gente de Windows y ofenderá profundamente a la gente de Linux. O, si eres aconfesional como yo, ¡te gustará!

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

Nuevamente un recordatorio:Modificar archivos que no se encuentren bajo /mnt/<x> con una aplicación de Windows en WSL no es compatible. Pero edita cosas en /mnt/x con lo que sea y estás bien.

Compartir Compartir Compartir

Si tiene Windows 10 Build 17064 o más reciente (ejecute la versión desde Windows o "cmd.exe /c /ver" desde Linux) e incluso puede compartir una variable de entorno.

131 → $ cmd.exe /c ver

Microsoft Windows [Version 10.0.17672.1000]

Hay una variable de entorno especial llamada "WSLENV" que es una lista delimitada por dos puntos de variables de entorno que se deben incluir al iniciar procesos WSL desde Win32 o procesos Win32 desde WSL. Básicamente, le das una lista de variables que deseas recorrer/compartir. Esto facilitará cosas como las compilaciones duales multiplataforma. Incluso puede agregar un indicador /p y traducirá automáticamente las rutas entre el estilo c:\windows y el estilo /mnt/c/windows.

Consulte el ejemplo en el blog de WSL sobre cómo compartir un GOPATH y usar VSCode en Windows y ejecutar Go en ambos lugares.

También puede usar una línea de comandos integrada especial llamada "wslpath" para traducir nombres de rutas entre Windows y WSL. Esto es útil si está compartiendo scripts de bash, haciendo scripts multiplataforma (tengo scripts de PowerShell Core que se ejecutan en ambos lugares) o simplemente necesita cambiar los tipos de ruta mediante programación.

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

Todavía no hay una página de manual para wslpath, pero copiada de este problema de GitHub, aquí está la esencia:

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

Una nota final, una vez que haya instalado una distribución de Linux desde la tienda de Windows, depende de usted mantenerla actualizada. La tienda de Windows no ejecutará la "actualización apt" ni tocará sus Linux una vez que se hayan instalado. Además, puede tener Ubuntu 1604 y 1804 instalados uno al lado del otro y no le hará ningún daño.

Enlaces relacionados

  • Configuración de un entorno de desarrollo brillante dentro de Linux en Windows 10
  • Terminal Badass:¡¡¡actualización de los archivos dotfile de WSL, macOS y Ubuntu!!! por Jessica Deen

¿Está utilizando WSL?

Patrocinador: Consulte JetBrains Rider:un IDE .NET multiplataforma. Edite, refactorice, pruebe y depure aplicaciones ASP.NET, .NET Framework, .NET Core, Xamarin o Unity. Obtenga más información y descargue una versión de prueba de 30 días.


Linux
  1. Cómo acceder a los sistemas de archivos de Linux en Windows 10 y WSL 2

  2. Consejos y trucos de variables de entorno de Linux

  3. Consejos y trucos de Linux .htaccess

  4. Kali Linux en la tienda de aplicaciones de Windows

  5. Determine la versión del sistema operativo, Linux y Windows de Powershell

Un tipo de Windows en un mundo Linux:YaST y el escritorio

Docker Desktop para WSL 2 integra Windows 10 y Linux aún más cerca

Consejos y trucos geniales de WSL (Subsistema de Windows para Linux) que usted (o yo) no sabía que eran posibles

Desarrollo Web y Técnicas Avanzadas con Linux sobre Windows (WSL)

Ubuntu ahora en la tienda de Windows:actualizaciones de Linux en Windows 10 y consejos importantes

Los 30 mejores software de contabilidad y finanzas para escritorio Linux