25 febrero, 2022

CRLF vs LF para programar en Windows

Dentro de los quehaceres diarios del desarrollador está el hecho de poder adaptarse a los diferentes sistemas operativos y sus entornos de desarrollo. A quienes les guste programar en Windows con WSL (Windows Subsystem for Linux) o que varíen entre sistemas basados en Unix y Windows, a veces podemos encontrar problemas con el CRLF.

 

¿Qué son estas siglas?

 

Hacen referencia a la notación de término de una línea, CR-LF (Carriage Return [\r] Line Feed [\n]), es decir, que para denotar un término de línea se agregarán estos caracteres.

Por ejemplo, en Windows,  se utiliza CRLF mientras que en los sistemas basados en Unix se utiliza LF. Como dato el protocolo HTTP siempre se utiliza CRLF para terminar una línea.

 

¿Qué problemas nos podría traer en nuestros desarrollos?

 

Bastantes, sobre todo si no entendemos bien su funcionamiento.

Si estás utilizando WSL y haces “git clone” para traer un proyecto, estos archivos se crearán con CRLF, y si dentro de nuestro proyecto vamos a ejecutar, por ejemplo, un archivo “.sh” dentro de WSL la ejecución de éste fallará debido al delimitador de línea. Es por ello que necesitamos cambiar este delimitador para evitar conflictos en la ejecución de archivos generados por Windows.

 

¿Cómo podemos solucionar este problema?

 

Principalmente, tenemos dos caminos: el primero es, si ya tenemos archivos creados en el sistema, estos se pueden identificar en la parte inferior de la IDE, para este ejemplo se muestra en Webstorm.

 

 

Si este es el caso, sólo deberíamos cambiar desde CRLF a LF y volver a ejecutar los archivos correspondientes.

 

El segundo camino busca que todos los archivos que se vayan a generar deben tener el delimitador LF. Para ello, podemos configurar GIT para que al momento de hacer “clone” de un proyecto los archivos se generen con este delimitador. Para ello, necesitamos ejecutar la siguiente configuración en la terminal de tu sistema:

 

git config –global core.autocrlf false

 

Cabe destacar, que esta solución es para los desarrolladores que tengan sus proyectos corriendo sobre WSL con una IDE instalada en Windows y no sobre la misma instancia de WSL.

 

Revisores: Exequiel Fuentes Lettura, Francisco Pérez A. (francisco.perez.aste@gmail.com)

Add Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *