¿Por qué uso Windows?
Estoy consciente que soy de los pocos desarrolladores de Software que no puede ser productivo en un Mac. Por otro lado, no he podido dar con una distribución de Linux para end User que realmente cumpla con todas las necesidades del día a día. Esto es porque mis últimos roles se dividen entre ser una persona que tiene que pasar mucho tiempo en aplicaciones de ofimática (Donde Microsoft Windows es el rey), pero también en el desarrollo de aplicaciones.
En resumen, soy un usuario de Windows pero cuando escribo código me gusta pensar que estoy dentro de un entorno Linux.
Disclaimer: Si estás usando WSL (Windows Subsystem for linux) y te encuentras conforme quizás no deberías seguir leyendo este post.
Aún no migro mi entorno de trabajo a WSL (Windows Subsystem for Linux)
La decisión de no migrar es solo personal, aún no me acostumbro a hacer instalaciones de herramientas tanto en el WSL como en Windows. Muchas de estas herramientas (por ejemplo NodeJS) también suelen ser usadas por editores de código o IDEs que aún no acceden a WSL.
Igualmente utilizo estas development tools, donde Visual Studio Code recientemente solucionó este problema, no obstante Visual Studio IDE aún no lo ha resuelto.
CRLF vs LF
Sí escribes código en Windows pero piensas en ambientes linux y adicionalmente no usas esa maravillosa opción de Git for Windows “Checkout Windows-style, commit Unix-style” seguramente has tenido pesadillas.
¿Para qué entrar en polémica de decir cuál formato usar?
En Windows solo deberías trabajar con CRLF porque es el formato de creación por defecto del Sistema Operativo. Y sí, Visual Studio Code reformatea el archivo a tu favor cuando detecta que tiene que funcionar sin excusas en LF, pero igual dependemos de configuraciones en el editor.
Cygwin y CRLF
Sí estás usando cygwin y todas sus geniales GNU tools, si tienes scripts que están en CRLF puede ser que te topes con errores donde ‘\r’ es protagonista y de este tipo:
myscript.sh: line 1: cd: $'somedir\\someotherdir\r': No such file or directory
Esto ocurre porque Cygwin y sus set de tools, van a esperar formatos de archivos LF. Recordemos que su objetivo es ser lo más parecido a Linux.
Ignorar CRLF en Cygwin
Hay dos maneras de ignorar CRLF, una afecta solo al usuario que haga un login a bash y la otra es global.
1.- Editar el archivo .bash_profile
Si tu shell de bash inicia bajo el comando bash -l deberías ubicar el archivo .bash_profile ubicado en /cygwin/home/{user} y agregar lo siguiente:
export SHELLOPTS
set -o igncr
2.- Modificar las variables de entorno
Esta opción ignorará de manera global todo formato CRLF, para esto debes agregar una variable de entorno; Mi Pc->Ajustes avanzados del sistema->Variables de entorno
Conclusión
Usar WSL o Cygwin son alternativas para los desarrolladores donde no es una opción salir de Windows debido a que somos altamente atraídos por las tools de GNU.
No obstante, nada es perfecto. Es posible que encontremos problemas y eso puede hacer que nos desviemos de nuestro foco.
