LINUX: Personalizar el prompt de Shell Bash.

¿Qué es el Prompt de Linux?

El prompt en la shell de Linux es la información o el símbolo que se encuentra antes del cursor, es decir donde empezamos a escribir los comandos que ingresamos a la shell. En cada distribución de Linux este viene por defecto de una forma diferente, y dentro de la misma distribución los usuarios suelen personalizar el prompt de muchas maneras.  En nuestro caso, para un usuario limitado de sistema, nos lo muestra de la siguiente forma:

En el anterior ejemplo vemos que la muestra el usuario «myvclsys» que es la información que muestra antes del símbolo de la «@» y la nombre de host que es, «lab-serv», en el que nos encontramos, antes del símbolo «$». Cuando aparece el símbolo de «#», representa que el usuario que ingresará los comandos es el usuario root. Como mostramos en el siguiente ejemplo:

Como personalizar el prompt de shell.

Para personalizar el prompt, necesitaremos utilizar las denominadas secuencias de escape.
Las secuencias de escape más comúnmente utilizadas son las siguientes:

  • \u : Nombre del usuario actual.
  • \h : Nombre del host hasta el primer punto (.), por ejemplo, orion del host orion.zeppelinux.es.
  • \H : Nombre del host completo.
  • \w : Path del directorio de trabajo actual.
  • \W : Nombre del directorio de trabajo actual.
  • \d : Fecha actual en formato (dia_semana mes día, lun jul 27.
  • \t : Hora actual en formato 24 horas (HH:MM:SS).
  • \T : Hora actual en formato 12 horas (HH:MM:SS).
  • \@ : Hora actual en formato 12 horas (am/pm).
  • \n : Nueva línea.
  • \r : Retorno de carro (enter/intro).
  • \s : Nombre de la shell.
  • \v : Versión de bash.
  • \V : Numero de la release de bash.
  • \! : Número en el historial del comando ejecutado.
  • \# : Número de comando de este comando.
  • \$ : Si se trada de un usuario normal, aparece un $. Si se trata del usuario root, aparece un #.
  • \\ : Barra diagonal.
  • \[ : Inicio de una secuencia de caracteres no imprimibles.
  • \] : Fin de una secuencia de caracteres no imprimibles.
  • Texto o carácter: Escribimos el texto o carácter que deseamos que aparezca sin la barra (\)

Personalización del prompt. Ejemplo práctico.

  • Hacer copia de seguridad del archivo que vamos a modificar, por si hubiera que restaurarlo en algún momento:

$ cp ~/.bashrc ~/.bashrc.back

  • Editamos el archivo ~/.bashrc:

$ nano ~/.bashrc

  • Por defecto el prompt de nuestro sistema suele ser similar a este:

Para hacer pruebas de configuración, sin afectar al prompt que tenemos actualmente configurado, podremos asignarle un valor a la variable PS1 de sistema y ver sí realmente es el resultado que esperamos. Sí no son los resultados esperados, no pasa nada, los cambios no se guardan en el sistema.

Veamos un ejemplo, el prompt de mi sistema es el siguiente:

Para modificarlo o personalizarlo, al final del archivo agregamos alguno de los códigos siguientes, en función de apariencia que queramos para nuestro prompt. Veamos algunos ejemplos:

Vamos a realizar la primera prueba, ejecutando lo siguiente:

export PS1= «mi_prueba >»

Ahora el nuestro prompt tiene la siguiente forma:

El cambio anterior sólo afecta a la sesión actual y no se queda guardada en el sistema. Vamos a a crear una configuración con las sentencias de escape vistas anteriormente. Por ejmplol podremos crear un prompt de la siguiente forma: usuario@host:~$, para lo que ejecutaremos la siguiente sentencia:

Cambiar los colores del prompt:

El formato del comando que tenemos que usar es el siguiente:

PS1="\e[40;0;32m[\u@\h \W]$ "

En este caso lo importante de la sintaxis es:

\e[40;0;32m

Encontramos que hay tres números, separados por punto y coma.

El primero de los números (en este caso 40) representa el color del fondo. Le sigue otro número (en este caso el 0) que representa las características del texto. Luego termina con el último número (el 32) que esta en lugar del color del texto.

¿Qué colores podemos usar?

Estas son las variables que podemos modificar.

Las características del texto:

0: texto normal
1: texto en negrita
3: texto subrayado

El color del texto:

30: negro
31: rojo
32: verde
33: amarillo
34: azul
35: violeta
36: cyan
37: blanco

Color del fondo:

40: negro
41: rojo
42: verde
43: amarillo
44: azul
45: violeta

Por su parte el “/e” y “m” que abren y cierran significa que estamos usando una secuencia de colores.

El resto del comando ya lo leímos:

PS1="\e[37;0;45m[\u@\h \W]$ "

\u@ representa tu nombre… y así, ya lo vimos más arriba. Esto se puede modificar si lo necesitamos. Pero volviendo a nuestro tema…

Sí lo que deseamos hacer un cambio permanente hemos de modificar el siguiente archivo.

./etc/bash.bashrc 

Aquí podemos observar una parte del fichero ./etc/bash.bashrc , que como hemos indicado podemos modificar para personalizar nuestro prompt.