Cómo personalizar colores y contenido de Bash en el prompt de terminal de Linux

Hoy, Bash es el shell por defecto en la mayoría (si no en todas) las distribuciones modernas de Linux. Sin embargo, es posible que haya notado que el color del texto en el terminal y el contenido del mensaje pueden ser diferentes de una distro a otra.

En caso de que se han estado preguntando cómo personalizar esto para una mejor accesibilidad o mero capricho, les montreré como puede cambiarlo.

Variable de entorno de Bash PS1

El símbolo del sistema y el aspecto del terminal están gobernados por una variable de entorno denominada PS1. De acuerdo con la página de manual Bash, PS1 representa la cadena del prompt principal que se muestra cuando el shell está listo para leer un comando.

El contenido permitido en PS1 consta de varios caracteres especiales de escape invertido cuyo significado se muestra en la sección PROMPTING de la página de manual.

Para ilustrar, vamos a mostrar el contenido actual de PS1 en nuestro sistema (esto puede ser algo diferente en su caso):

$ echo $PS1
[\u@\h \W]\$

Ahora explicaré cómo personalizar PS1 según nuestras necesidades.

Personalización del formato PS1

De acuerdo con la sección PROMPTING en la página de manual, este es el significado de cada carácter especial:

\U: el nombre de usuario del usuario actual.
\H: el nombre de host hasta el primer punto (.) En el nombre de dominio completo.
\W: el nombre de base del directorio de trabajo actual, con $HOME abreviado con un tilde (~).
\$: Si el usuario actual es root, muestra #, $ en caso contrario.

Por ejemplo, es posible que desee considerar la posibilidad de agregar ! Si queremos mostrar el número del historial del comando actual, o \H si queremos mostrar el FQDN en lugar del nombre del servidor corto.

En el ejemplo siguiente, importaremos ambos a nuestro entorno actual ejecutando este comando:


PS1="[\u@\H \W !]\$"

Al presionar Intro, verá que el contenido del mensaje cambia como se muestra a continuación. Compare el mensaje antes y después de ejecutar el comando anterior:

Ahora vamos un paso más allá y cambiamos el color del usuario y el nombre de host en el símbolo del sistema, tanto el texto como el fondo que lo rodea.

En realidad, podemos personalizar 3 aspectos del indicador:

Formato de Texto Color del texto Color de Fondo
30: Negro 40: Negro
1: negrita 31: Rojo 41: Rojo
4: subrayado 32: Verde 42: Verde
33: Amarillo 43: Amarillo
34: Azul 44: Azul
35: Púrpura 45: Púrpura
36: Cian 46: Cian
37: Blanco 47: Blanco

Utilizaremos el carácter especial de \e al principio y un m al final para indicar que lo que sigue es una secuencia de color.

En esta secuencia, los tres valores (fondo, formato y primer plano) se separan por comas (si no se da valor, se asume el valor predeterminado).

Además, dado que los rangos de valores son diferentes, no importa cuál (fondo, formato o primer plano) especifique primero.

Por ejemplo, la siguiente PS1 hará que el mensaje aparezca en texto subrayado amarillo con fondo rojo:


PS1="\e[41;4;33m[\u@\h \W]$ "

Tan bueno como parece, esta personalización sólo durará para la sesión de usuario actual. Si cierra su terminal o sale de la sesión, los cambios se perderán.

Para que estos cambios sean permanentes, deberá añadir la siguiente línea a ~/.bashrc o ~/.bash_profile según su distribución:


PS1="\e[41;4;33m[\u@\h \W]$ "

Siéntase libre de jugar con los colores para encontrar lo que funciona mejor para usted.

Deja un comentario