Platzi
Platzi

Suscríbete a Expert y aprende de tecnología al mejor precio anual.

Antes:$249
$209
Currency
Antes:$249
Ahorras:$40
COMIENZA AHORA
72

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

105959Puntos

hace 4 meses

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

Configura Windows como un entorno profesional para desarrollo. Aprende a configurar correctamente Windows Subsystem Linux o WSL, configurar llaves SSH, instala Visual Studio Code y conoce el flujo básico de Git.

¡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

Configura Windows como un entorno profesional para desarrollo. Aprende a configurar correctamente Windows Subsystem Linux o WSL, configurar llaves SSH, instala Visual Studio Code y conoce el flujo básico de Git.
Carlos Eduardo
Carlos Eduardo
RetaxMaster

105959Puntos

hace 4 meses

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
10340Puntos

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

4

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

2
2565Puntos

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.

2
19529Puntos

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?

6
105959Puntos
4 meses

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
19529Puntos
4 meses

Muchas gracias.

2
10747Puntos

Gran blog @RetaxMaster 👏👏

1
729Puntos

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 😄 ❤️

1
5250Puntos

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
1774Puntos

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

1
5350Puntos
2 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
13783Puntos

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
10431Puntos

Estuvo interesante, aunque hace tiempo que uso GNU/Linux

1
10969Puntos

Gracias buen hombre. Samaritano de internet 👍

1
11204Puntos

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

1
2499Puntos

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
1845Puntos

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
2499Puntos

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

1
24098Puntos

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