¡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!
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.
La carrera de desarrollador web ofrece formación en muchas de las herramientas que trabajan con WSL.
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:
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:
¿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? 😉.
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?! 👀
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 😄.
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 💪.
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
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
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.
Quizá eso pasó por las especificaciones de tu laptop, y el problema pudo haber sido causado por diversas situaciones, como lo pueden ser:
No tenia idea que estaba usando mal WSL 😱
Muchísimas gracias.
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?
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
Muchas gracias.
Muy buen curso super interesante. Recomiendo revisar los comentarios de cada clase, porque te ayudaran siempre que te quedes trabado en algún paso.
Bien pues tengo a ver O_O si entendi, ya tengo termine de instalar WSL2, pero yo usualmente tengo mis proyecto en una carpeta que se encunetra en el escritorio, al abrir WSL2 me posiciona por defecto en el home el cual es “/home/<user>/” entonces, lo recomendable es que mueva mi carpeta de proyecto a mi home, ¿pero por que?, por que de esta manera me acostumbro a la estuctura de archivos de linux, y asi es como se encuentran los despligues en los servidores!
Confirmen Pleaseeeee!!
Gran blog @RetaxMaster 👏👏
Excelente blog, me sacó de todas mis dudas y justamente del error de querer trabajar desde /mnt.
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
Saludos @alfredojvp
Yo tambien pase por ese problema y tengo la solucion:
$ ls -a
$ nano .bashrc
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!
por defecto no deberia abrirse en mnt, sino en tu carpeta home, prueba con:
cd / cd
los alias que te comentaron se crean mas o menos asi:
alias status='git status'aliasadd='git add --all'alias jj1='cd ../../mnt/c/Users/Alfonso\ Zapata/Jupyter'alias code='code-insiders .'alias actualizar='sudo apt-get update && sudo apt upgrade'alias avenv='source env/bin/activate'alias cvenv='python3 -m venv env'alias requirements='pip3 freeze > requirements.txt && cat requirements.txt'
Yo realicé los tres cursos de entornos de prework, y la verdad que están genial!!
Hola.
Existe otra alternativa para trabajar en Linux sin instalar WSL. Ya que me ocasiono un problema (pantalla azul) cuando lo instale la primera vez.
Muchas gracias por este aporte, próximamente estaré tomando el curso de Prework. Mientras tanto, tengo un problema, por alguna razón no puedo ejecutar WSL. Cuando intenté ejecutarlo a través de VSC me aparece esta imagen. ¿Como puedo resolverlo? Gracias por su ayuda 💚
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…
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 😄
Tengo una duda, hay alguna manera de acceder a los archivos con un explorador con el de Windows? ¿que pasa si estoy trabajando con archivos multimedia como imagenes, o cualquier archivo binario? Apenas estoy empezando con esta tecnología jeje
que buen blog
Instale WSL en dos ocasiones, en la primera mi computadora se puso lenta, me apareció la pantalla azul de la muerte y no me dejaba trabajar y en la segunda vez que lo instale aparecieron los mismos errores pude verificar que era WSL quien hacía que mi computadora se volviera lenta, al final tuve que des instarlo.
Que gran contenido, recuerdo estár haciendo el curso de Git y Github de Platzi cuando Freddy comentó algo de Wsl y me llamó la atención, así que me fui a hacer el curso de Prework para Windows donde explican eso a detalle, pero aún tenía esta duda de… “¿No se supone que GitBash ya solucionaba el problema?” pero este Post me respondió todas mis dudas, eso fue hace tiempo, pero aún de vez en cuando vengo a leer este Post para refrescar ese conocimiento. Saludos y gracias.
excelente !!
Que excelente post.
Y desde Windows dónde puedo ver los archivos creados en el sistemas de archivos de Linux?
Gran aporte Crack!!
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.
ánimo, instalen todo sin miedo
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” ✍️
Muchísimas gracias mi hermano, eres grande!
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
Excelente explicacion! muchas gracias!!
¿Cómo empiezo a mover todos los proyectos de Windows a Linux para evitar estos problemas?
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 😄Carlos, yo ya hice el curso de Prework y WSL esta genial, pero tengo dos dudas:
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 ?
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.
¡Hola!
cd ~
y eso te llevará a tu home de Linux, ahí puedes trabajar todo lo de programación 😄¿Es aconsejable cambiar mi Windows por Linux para que sea el “sistema operativo” por defecto?
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.
excelente que gran aporte.
¿Entonces, si deseo iniciar sesión en mi usuario de Ubuntu desde otra pc para acceder a mis archivos puedo.?
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” 😄
Un aporte magnifico! Que triste no haberlo leido antes de casi terminar a las malas un curso desde /mnt jajaja
Estuvo interesante, aunque hace tiempo que uso GNU/Linux
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.
😃
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!!!
es lo mismo usar la terminal wsl a usar la terminal de ubuntu?
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.
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! 😄
Gracias buen hombre. Samaritano de internet 👍
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 😄 ❤️
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