104

¿Qué es WSL y por qué deberías usarlo?

162954Puntos

hace un año

Curso de Prework: Configuración de Entorno de Desarrollo en Windows
Curso de Prework: Configuración de Entorno de Desarrollo en Windows

Curso de Prework: Configuración de Entorno de Desarrollo en Windows

Prepara tu computadora para trabajar como Web Developer profesional. Instala y configura correctamente Windows Subsystem Linux o WSL, tus llaves SSH y Visual Studio Code. Domina el flujo básico de Git y GitHub para programar con un sistema de control de versiones junto a tu profesor Ricardo Celis.

¡Hola, pequeña gran developer! ¿Así que estás lista para empezar tu camino en el desarrollo web? ¡Felicidades! Sin embargo, debes saber que hay algunas herramientas que necesitarás para poder combatir esos futuros bugs y problemas que te esperan ☝.

Si ya hiciste el Curso de Prework: Configuración de Entorno de Desarrollo en Windows sabrás de qué herramientas hablo, y si no, ¿qué estás esperando? 👀. Este curso es la base para todos los que desean convertirse en desarrolladores web profesionales 💪.

Una de las herramientas que instalamos en este curso, si eres usuario de Windows, fue Windows Subsystem for Linux (WSL), pero… ¿Qué es WSL exactamente y por qué tuve que instalarlo? 🤔 ¡Eso es lo que vamos a mirar en este blogpost!

¿Por qué necesito WSL?

Hoy en día el desarrollo web ha dejado de enfocarse solo en la creación de archivos HTML, CSS y JavaScript; tenemos muchas herramientas que nos permiten crear sitios web de diferentes complejidades: parsers, bundlers, transpiladores, live servers, etc. Lo que tienen en común todas ellas es que hacen uso de una sola herramienta: la terminal.

La terminal es algo de lo que no podrás escapar si planeas dedicarte al desarrollo web y es por ello que tenemos el Curso de Introducción a la Terminal y Línea de Comandos. Esto es porque ser desarrollador web implica más que solo saber programar con JavaScript, ser desarrollador web es saber entenderte con la terminal, saber instalar paquetes, librerías, automatizar tareas ¡y mucho más! 😄.

¡Pero no te preocupes!, no es algo a lo que debas tenerle miedo, todas las herramientas que tenemos como desarrolladores web fueron creadas con el objetivo de facilitarnos mucho más nuestra forma de programar. Y sí, la terminal está ahí para facilitarnos la vida, aunque parezca lo contrario 💚.

Y justamente eso es WSL, una terminal que nos facilitará la vida al momento de programar todos esos increíbles sitios web que tenemos en mente. Aunque seguramente te preguntarás, ¿por qué WSL y no CMD? Y esta es una excelente pregunta, pero para poder responderla necesitas saber algo: no todas las terminales son iguales.

Entendiendo los tipos de terminales

Todos nosotros conocemos a los 3 sistemas operativos principales: Windows, Linux y macOS. Pero antes de ellos había dos sistemas operativos principales: UNIX y MS-DOS. Ambos eran sistemas operativos manejados desde la terminal y eran totalmente diferentes, sus comandos, sus reglas, su sistema de archivos y demás eran distintos, siendo UNIX un sistema operativo más “dev friendly”, es decir, más cómodo para trabajar con programación de archivos.

Mientras que macOS y Linux comparten similitudes con UNIX, Windows por su parte es un descendiente de MS-DOS. ¿Alguna vez has visto que muchos desarrolladores web usan Linux? Bueno, ahora ya sabes por qué 😉.

Al día de hoy, nuestros 3 sistemas operativos principales conservan las terminales, las terminales de macOS y Linux están basadas en UNIX, mientras que la de Windows está basada en MS-DOS, ¿recuerdas cuál era la “dev-friendly”? 👀

Windows es un sistema operativo más pensado para el usuario final, mientras que Linux está más asociado con programadores. Eso no significa que no puedas programar con Windows, pero es más incómodo porque tienes que virtualizar y tener cada tecnología por separado, mirémoslo en este sentido:

  • ¿Necesitas instalar Git? Entonces necesitas instalarlo desde su página oficial, y como Windows no es dev-friendly, Git tuvo que crear Git Bash para poder funcionar (que básicamente es una emulación de terminales UNIX, y esta es la misma razón por la que en Linux y macOS no existe Git Bash, porque sus terminales ya son bash 👀)
  • ¿Necesitas instalar Node.js y NPM? Pues necesitas descargarlo desde su página oficial y estos traen sus propias terminales.
  • ¿Quieres programar con PHP? Pues necesitas descargarte todo el paquete ya virtualizado con XAMPP o WAMPP para poder usarlo (y claro, trae sus propias terminales).
  • ¿Te interesa Python? ¿Qué crees? Así es, hay que instalarlo por separado 👀.

El problema con esto es que cada tecnología trae sus propias terminales emuladas, tienes una terminal para git, otra para Node, otra para PHP, etc. En el mundo de Linux y macOS esto no pasa, debido a que sus terminales son dev-friendly, basta con instalar cada paquete y usar la misma terminal para todo. Por ejemplo:

  • ¿Necesitas instalar Git? ¡Por su puesto! ¿Git Bash? ¿Qué es eso? Tu terminal es suficiente.
  • ¿Quieres Node.js? ¡Claro que sí! Y de paso te instalo NPM, ah y puedes usarlo en la terminal que ya tienes, no hay problema 😉.
  • ¿PHP? Ya mismo lo tienes en tu terminal.
  • Oh, ¿vas a usar Python? Instalado y disponible en tu terminal 😉.

¿Qué es lo mejor de todo esto? Mientras que en Windows tienes que descargar el instalador, abrirlo y darle a “siguiente, siguiente, instalar”, en Linux y macOS basta con correr un único comando:

  • sudo apt install <package-name> (Linux/Ubuntu)
  • sudo brew install <package-name> (macOS)

Con solo escribir eso y presionar enter ya vas a tener instalada tu herramienta y lista para usar, supercómodo ¿no lo crees? 😉.

¡WSL al rescate!

Microsoft se dio cuenta del problema que implicaba programar con Windows y si querías estar más cómodo programando debías usar Linux… ¿Pero y los videojuegos? ¡Yo no puedo jugar en Linux!

Gracias a esto surgió WSL, tienes todo el poder de la terminal de Linux, pero con las ventajas de Windows 🤠.

¡Oye! Pero yo ya estaba usando Git Bash/Cmder, ¿eso no arreglaba el problema?

¡Sí!.. parcialmente… El problema con Git Bash y Cmder es que son emulaciones de las terminales basadas en UNIX, por lo que no tendrás el 100% de las ventajas que te ofrece un sistema UNIX tal cual, ¿recuerdas que te mencioné que MS-DOS y UNIX eran sistemas operativos manejados desde la terminal y eran totalmente diferentes? Bueno, estas emulaciones, aunque tengan comandos similares, seguirán estando basadas en MS-DOS por lo que el sistema de archivos seguirá siendo el de MS-DOS.

Esta es la razón por la que algunos comandos de Linux no funcionan con Git Bash o Cmder, por ejemplo, el comando chmod que se encarga de cambiar los permisos de un archivo o carpeta, ¡y tiene total sentido! Este comando trabaja con el sistema de archivos de Linux, pero en Windows es diferente.

Además… ¡¿por qué trabajar con una emulación si puedes tener una terminal 100% tipo UNIX?! 👀

🛑 El error que debes evitar cometer al trabajar con WSL

Es importante que sepas que WSL es un sistema operativo tal cual instalado en tu computadora Windows, sí, literalmente tienes un Linux por debajo de tu Windows 👀.

Sabiendo esto, es importante mencionarte que hay un error muy común que muchas personas comenten cuando trabajan con WSL… Este error es querer seguir trabajando con Windows. WSL te pone a disposición una carpeta llamada /mnt desde la cual puedes acceder a Windows… ¡Pero recuerda que Linux y Windows están basados en dos sistemas operativos completamente distintos! Por eso nunca deberías trabajar dentro de esa carpeta.

¡Pero es que me gusta Windows y me gusta ver las carpetitas en el explorador de archivos!

Sí, pero recuerda que debes acostumbrarte a la terminal, no siempre vas a tener una ventana gráfica que te muestre todo, y este es uno de esos casos ☝👀. Todos tus proyectos deben vivir dentro de Linux, porque de esa forma estarás usando su sistema de archivos, sus reglas y sus comandos, en el momento en el que pones un proyecto dentro de la carpeta /mnt estarás usando el sistema de archivos de Windows.

Esto implica un problema, porque si tratas de ejecutar comandos que trabajan con el sistema de archivos (por ejemplo chmod) no va a funcionar, ¿por qué? Por lo que ya te expliqué en este blogpost, son mundos diferentes y son sistemas de archivos diferentes, por lo que si Linux le dice a Windows: chmod, Windows te va a decir: “¿Qué me estás diciendo tú?” y simplemente te va a ignorar 👀. Esta es la razón por la que cuando escribes ls -al a cualquier carpeta que esté dentro de /mnt los archivos te salen con todos los permisos puestos, porque Linux no sabe qué permisos mostrarte, ya que son sistemas de archivos diferentes.

Ahora que sabes esto deberías empezar a mover todos tus proyectos de Windows a Linux para evitar estos problemas 😄.

¿Estás lista para WSL?

En este blogpost aprendiste las bases de los sistemas operativos, por qué son mundos diferentes y lo cómodo que es trabajar con la terminal. Ahora sabes por qué tenemos WSL y por qué muchos programadores prefieren usar Linux para programar 😉.

Usar Linux o macOS para programar es muy cómodo porque tienes todo a la mano, gracias a sus terminales puedes ejecutar programas como si fueran comandos, y esto es gracias a cómo funciona bash por debajo, que es un tema digno de otro blogpost 😄.

Recuerda, cada tecnología que usamos como desarrolladores es simplemente para hacernos la vida más fácil, y las terminales basadas en UNIX es una de esas herramientas que nos ahorrará tiempo de programación y dolores de cabeza.

¿Y tú estás lista para empezar a usar la terminal y dejar de tenerle miedo a Linux? Empieza instalando WSL en tu computadora con el Curso de Prework: Configuración de Entorno de Desarrollo en Windows, y si eres usuario de macOS aprende a instalar más herramientas que te facilitarán el trabajo con el Curso de Prework: Configuración de Entorno de Desarrollo en macOS. Recuerda que este es el inicio de tu camino como desarrolladora web profesional, así que #NuncaParesDeAprender 💪.

Curso de Prework: Configuración de Entorno de Desarrollo en Windows
Curso de Prework: Configuración de Entorno de Desarrollo en Windows

Curso de Prework: Configuración de Entorno de Desarrollo en Windows

Prepara tu computadora para trabajar como Web Developer profesional. Instala y configura correctamente Windows Subsystem Linux o WSL, tus llaves SSH y Visual Studio Code. Domina el flujo básico de Git y GitHub para programar con un sistema de control de versiones junto a tu profesor Ricardo Celis.
Carlos Eduardo
Carlos Eduardo
RetaxMaster

162954Puntos

hace un año

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
11

el curso de prework esta geniaaaaaaal!!!

no le tengan miedo a la terminal, se los dice alguien que le tuvo miedo a la terminal…

:v

5
12932Puntos

Gran aporte, Toda via cometo el error de tener los archivos en Windows, gracias a esta explicación entendí el por que no tenerlo a si

2
4189Puntos

Me instale el WSL en mi HP y después de hacerlo me empezó a dar problema el explorador de Windows, cuando pasaba el puntero del raton por los iconos de la barra de tareas, y se abrían las miniaturas con transparencias se me ralentizaba el cursor, se ponía como en cámara lenta, y tuve que deshabilitar las transparencias en el escritorio, a la final no me gusto el resultado y lo que me ofrecía la terminal integrada en Windows así que termine por desinstalarla y como ni con eso soluciones el problema de la transparencia termine por restaurar mi portátil.

1
15876Puntos
5 meses

Quizá eso pasó por las especificaciones de tu laptop, y el problema pudo haber sido causado por diversas situaciones, como lo pueden ser:

  • NO tener windows 10 de 64 bits
  • Tener una versión anterior a la 16215.0 de windows 10
  • Limitación de hardware (procesador de pocos nucleos, poca memoria ram)
2
31916Puntos

Una duda.
Si yo usaba Git bash y ahora instalé Git en WSL ¿Hay problema al usar el cifrado SSH si yo lo establecí con Git bash?

8
162954Puntos
un año

No, porque Git Bash está en Windows y aparte tienes otro Git en WSL, son mundos distintos, son dos Git distintos, si ya usas WSL no necesitas Git Bash, eso significa que en WSL puedes crear tus propias llaves de cifrado SSH y van a ser completamente distintas a las de Git Bash

1
31916Puntos
un año

Muchas gracias.

2
12380Puntos

Gran blog @RetaxMaster 👏👏

2
24394Puntos

No tenia idea que estaba usando mal WSL 😱
Muchísimas gracias.

1
2612Puntos

¿Es aconsejable cambiar mi Windows por Linux para que sea el “sistema operativo” por defecto?

1
14Puntos

Gracias por compartir una noticia tan increíble sobre esto. Todos los conceptos sobre wsl ahora están resueltos. Siento que esto es bastante interesante for game.

1
9998Puntos

Yo actualmente me encuentro usando ubuntu, porque por alguna extraña razón cada vez que corría react o vue dentro de wsl con ubuntu no refrescaba, no se si tendrá que ver con el nvm o algo así.
Pd tenía abierta la carpeta dentro del wsl en vsc

1
1831Puntos

es lo mismo usar la terminal wsl a usar la terminal de ubuntu?

1
8662Puntos
10 meses

wsl (no estoy del todo seguro para afirmarlo) no es un una terminal, sino un conjunto de archivos que permite la compatibilidad de Linux en Windows. Por ello, es necesario tener WSL y la terminal Ubuntu. Te recomiendo el curso de prework, actualmente llevo llevo el curso de terminal y viendo en los comentarios que primero llevaramos el prework, sin duda alli se despeja muchas dudas. Saludos.

1
17912Puntos

Había escuchado de esto en el curso de GIT de fredy, pero veo que esto cada vez se impregna más en microsotf ,no me imagino las cosas locas que veremos en un futuro.
😃

1
11984Puntos

Estuvo interesante, aunque hace tiempo que uso GNU/Linux

1
12842Puntos

Un aporte magnifico! Que triste no haberlo leido antes de casi terminar a las malas un curso desde /mnt jajaja

1

¿Cómo empiezo a mover todos los proyectos de Windows a Linux para evitar estos problemas?

1
162954Puntos
6 meses

Puedes usar el comando cd, simplemente accede a la carpeta /mnt/c y desde ahí busca en donde tienes tus proyectos y muévelos a tu directorio home de Linux 😄

1
5365Puntos

Muy buen post RetaxMaster!
Tengo WSL2 en mi maquina y es genial, pero… tengo un problema. Mi maquina tiene 2 drives: C (ssd) y el D (hdd), y wsl guarda todo en el disco C dejandome sin espacio. Probe las varias “soluciones” a este problema cambiando la ubicacion donde esta instalado wsl, para que por defecto todo archivo creado en wsl sea almacenado en disco D, pero sigue guardando todo en C. Lo comprobe creando un archivo .txt con lorem ipsum en el home de mi wsl y viendo como cambiaba la capacidad de almacenamiento de mi disco C de todas maneras.
Quiero traspasar mis archivos dev, proyectos and stuff de windows al ubuntu que vive en wsl2, pero este problema del almacenamiento no me dejara hacerlo…

1
162954Puntos
7 meses

Recuerda que WSL es una capa que está envolviendo a tu Windows, es decir, WSL es como una armadura para Windows, por tanto ambos deben estar en el mismo disco 😄

1
2224Puntos

Carlos, yo ya hice el curso de Prework y WSL esta genial, pero tengo dos dudas:

  1. Dijiste donde NO se debe trabajar, pero entonces donde debo empezar a crear todos mis archivos de programación ? en el home y de ahí en adelante ?

  2. He podido ver de forma grafica en mi PC lo que hago en linux con el comando explorer.exe ., y veo que la carpeta de Ubunto y home estan Red… pero cuando quiero acceder a Red desde el PC, no me deja y me dice "La detenccion de redes esta desactivada…"
    Hay forma de ver lo que voy haciendo de forma grafica desde el PC ?

Muchas gracias.

1
162954Puntos
6 meses

¡Hola!

  1. Sí, trabaja desde el home, es decir, usa el comando cd ~ y eso te llevará a tu home de Linux, ahí puedes trabajar todo lo de programación 😄
  2. Probablemente si puedes, pero no te lo recomiendo, recuerda que son sistemas operativos diferentes 😄
1
4984Puntos

Muchas gracias por el aporte, inicié hace poco con la programación y toda mi vida he utilizado windows. En un principio realicé la configuración e instalación de WSL, luego al realizar el curso básico de python tuve problemas para encontrar los archivos supongo que era porque estaban ubicados en la terminal y no en windows (error de principiante supongo), al final terminé desinstalando WSL, sin embargo quiero implementarlo por todos los beneficios que tiene.
pregunta ¿al realizar la configuración del entorno en cada uno de los cursos, si tengo instalado el WSL debo hacerlo como tipo Linux ?
¿si tuve instalada WSL y lo desinstalé volviendo a seguir el curso de configuración de entorno de windows no tendré problemas con los archivos y configuraciones que realicé previamente y desinstalé?
Muchas gracias de antemano.

1
714Puntos

Gran aporte Crack!!

1
15876Puntos

La terminal es emocionante, una vez que te das cuenta de lo sencillo que es usarla y de la inmensidad de cosas que puedes hacer, se torna sumamente emocionante. 10/10

1
4024Puntos

Muchísimas gracias mi hermano, eres grande!

1
12939Puntos

Gracias👌. Este post me resolvió la duda del porqué ciertos comandos no me funcionaban dentro de las carpetas de mnt.

“Windows y Linux están basados en dos sistmeas operativos completamente diferentes” ✍️

1
3572Puntos

Alguien sabe si hay algo que se pueda hacer para que automáticamente WSL te cargue en tu HOME de Linux y no en la carpeta /mnt? eso evitaría el error de los novatos y nos ahorraría un minúsculo engorro de siempre tener que ir al HOME cada vez que inicias la terminal

3
5365Puntos
7 meses

Saludos @alfredojvp
Yo tambien pase por ese problema y tengo la solucion:

  • En el Home de Linux hay un archivo oculto llamado “.bashrc” que se ejecuta cada vez que inicias sesion en la terminal. Para listar archivos ocultos (archivos que anteponen un punto en el nombre) ocupa este comando:
$ ls -a
  • Abre el archivo con un editor. En este caso usaremos nano que viene por defecto con linux:
$ nano .bashrc
  • Ve al final del archivo y añade el comando que quieres que se ejecute cada vez que inicias sesion en la terminal de linux. En nuestro caso es cambiar al directorio “Home” (~) cuando iniciemos sesion. Ejecutar el comando “cd” sin darle ningun directorio por defecto nos lleva al “Home”, asi que añadimos al final del archivo:
cd
  • Guarda el archivo en el editor de nano usando “ctrl+o”. Te preguntara si deseas guardar los cambios hechos y cambiar el nombre del archivo si lo deseas. Dale “Enter”.

  • Cierra el editor con “ctrl+x”

  • Cierra sesion o aplica los cambios en la sesion actual usando:

$ source ~/.bashrc

Y listo! Espero estos pasos te ayuden como me ayudaron a mi.
Saludos!

1
18385Puntos

excelente que gran aporte.

¿Entonces, si deseo iniciar sesión en mi usuario de Ubuntu desde otra pc para acceder a mis archivos puedo.?

1
162954Puntos
7 meses

Sí, de hecho así es como se hace cuando administras un servidor, inicias sesión en tu servidor desde otra PC

Eso lo puedes conseguir por medio de una cosa llamada “SSH” 😄

1
9800Puntos

Y desde Windows dónde puedo ver los archivos creados en el sistemas de archivos de Linux?

1
15119Puntos

Gracias buen hombre. Samaritano de internet 👍

1
3572Puntos

Esta super genial, no sabia que estaba cometiendo un error al trabajar en la carpeta /mnt, ya empiezo a mover mis archivos al verdadero HOME de Linux. Leer este articulo fue muy enriquecedor!!!

1
2207Puntos

estaba cometiendo el error de trabajar todo desde /mnt y no entendía por qué estaba fallando al agregar y quitar permisos si se suponía que desde WSL no había problema

muchas gracias, me resolviste la duda además tentarme aun mas a instalar Linux! 😄

1
4625Puntos

ánimo, instalen todo sin miedo

1
1022Puntos

Muy buen Post, pienso que aclara lo que muchas personas pensamos o conocemos de WSL y de los Sistemas Operativos, te da ese empujoncito que necesitabas para cambiarte a un SO de Linux 😄 ❤️