export PS1 con colores no respeta el salto de línea

Muy buenas a todos,

Hoy me he levantado inspirado y he querido que la línea de comandos de algunas de las máquinas con las que trabajo tengan colorines adorables del estilo [EEPGLEECYCG], lo cual no es ningún nombre de primigenio ni de nada por el estilo, es símplemente el acrónimo para la expresión Esto Es Producción, Gañán, Los Experimentos En Casa Y Con Gaseosa.

Por ello, he decidido poner en estas máquinas el siguiente esquema:

[PROD] root@goku:~#

Para lograr este prompt, he cambiado la variable de sistema PS1 por la siguiente:

$ export PS1='e[0;31m[PROD]e[m e[0;32m${debian_chroot:+($debian_chroot)}u@h:w$e[m ';

Al margen de lo que quiere decir cada cosa (si estáis interesados, os hago una descripción en otro post) resulta que esta expresión en principio correcta causaba que los saltos de línea no se respetasen, y que todo lo escrito, en el momento que llegaba a la columna 80 producía un retorno de carro sin salto de línea. Lo más gracioso es que obviaba completamente la configuración de terminal. Por muy larga que fuese la línea configurada para el terminal, en la posición 80 volvía a la posición 0 :D.

La solución (porque la razón aún no he sido capaz de encontrarla) es poner alrededor de los caracteres no imprimibles los comandos [ y ]. Aún estoy buscando el por qué de esto, pero la nueva expresión queda como sigue:

$ export PS1='[e[0;31m[PROD]e[m e[0;32m${debian_chroot:+($debian_chroot)}u@h:w$e[m] ';

Establecerlo en cada sesión es lo de menos. O bien se pone en /etc/profile para que lo tengan todos los usuarios, o bien en el .bash_profile o .bashrc del usuario al que se le quiera modificar.

Si os ayuda, me alegro. Saludos a todos!

1 opinión en “export PS1 con colores no respeta el salto de línea”

Deja un comentario

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