En BASH podemos utilizar variables que, normalmente, serán todas en mayúsculas. Pues existen ciertas variables que el shell bash utiliza para su funcionamiento tanto interno como de cara al usuario. Existen tanto variables de lectura, como variables de lectura-escritura. Las variables de lectura "simplemente" nos darán información sobre el estado del shell o del sistema, sin embargo, las de lectura-escritura nos van a permitir cambiar el comportamiento de bash.
El shell bash (como casi todos los shells) cuando recibe una orden (por ejemplo, un comando pasado por teclado) lo primero que hace es ver si la orden está dentro de sus órdenes internas (como return, exit...), luego mira en los alias, y después busca el comando en el $PATH .
La variable que más llama la atención a cualquier usuario que esté personalizándo el shell bash es la variable $PS1. Esta variable describe el prompt que bash mostrará al usuario antes de pedir un comando:
usuario@host $ echo $PS1
\u@\h \$
Como he dicho antes, las variables que para esto nos interesan son perfectamente modificables, un ejemplo de esto sería:
usuario@host $ PS1="\u@\h: \w \$"
usuario@host: ~ $
Ahora vemos cómo ha cambiado el prompt. Como ejemplos de prompts más elaborados se pueden probar:
usuario@host $ PS1="{\u@\h[\w] \$::- "
{usuario@host[~] $::- PS1="::- \t\n::- \u@\h[\w]\$::- "
::- HH:MM:SS
::-usuario@host [~]$::-
En resumen, podemos hacer que nuestro prompt contenga cualquier caracter que nosotros queramos, además de información útil. Los caracteres especiales más relevantes que se cambian por información útil al mostrar el prompt son:
• \h es el nombre de host hasta el primer punto.
• \H el nombre completo del host.
• \n nueva linea.
• \s es el nombre del shell, en nuestro caso, "bash"
• \t es la hora en formato 24 horas.
• \u es el nombre de usuario actual.
• \v es el número de versión de bash.
• \w es el directorio de trabajo actual.
Dentro de esta variable, PS1, también podemos hacer que se sustituya la salida de cualquier comando igual que hacemos en los scripts. Prueba con PS1=$(date).
Podemos hacer que partes del prompt aparezcan en color. Lo que queramos que aparezca entre colores, lo precederemos por \[\033[COLORm\] , teniendo en cuenta que al final del prompt debemos reestablecer el color nulo si no queremos que los comandos que escribamos salgan en color. Esto lo conseguimos con \[\033[0m\] . COLOR puede ser una secuencia con formato A;B , donde A vale 0 ó 1 y B vale desde 30 a 37. Cada una de las combinaciones posibles resulta en un color distinto.
Pruébalas para encontrar el que busques. Por ejemplo:
$ PS1="\[\033[01;32m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]"
usuario@host directorio $ # "usuario@host" saldrá en verde y "directorio" en azul
Combinaciones de colores en bash
Combinación Color
0;30 Negro
0;31 Rojo
0;32 Verde
0;33 Marrón
0;34 Azul
0;35 Púrpura
0;36 Cian
0;37 Gris claro
1;30 Gris oscuro
1;31 Rojo claro
1;32 Verde claro
1;33 Amarillo
1;34 Azul claro
1;35 Púrpura claro
1;36 Cian claro
1;37 Blanco
Colores de fondo
40 Negro
41 Rojo
42 Verde
43 Marrón
44 Azul
45 Púrpura
46 Turquesa
47 Gris
Los colores de fondo se usan precediendo el valor del color del fondo a los ya vistos para el color de las letras. Por ejemplo, \[\033[41;1;33m\] producirá texto amarillo sobre fondo rojo. Hay que tener en cuenta que \033 y \e son equivalentes y pueden usarse indistintamente.
$ PS1="\[\033[41;01;33m\]\u@\h [\w] \$::- \[\033[00m\] "
Otros mas:
PS1="\[\033[01;32m\]\u@\[\033[01;37m\]\h \[\033[01;31m\]\W \$ \[\033[00m\]::"
PS1="\[\033[40;01;33m\]\u@\[\033[41;01;37m\]bubulubuntu \[\033[40;01;36m\]\W \$ \[\033[00m\]::"
La variable PROMPT_COMAND contiene el comando que se ejecutará cada vez inmediatamente antes de que bash muestre el prompt.
Hasta ahora hemos estado viendo cómo personalizar el aspecto del prompt bash pero sin embargo hasta ahora los perderíamos al salir de la terminal. Bash lee algunos ficheros en cada inicio. En estos ficheros podremos colocar variables y alias para no tener que cambiarlos cada vez.
Antes necesitamos saber lo que es un shell de entrada o login y un shell interactivo. Un shell de entrada es el que obtenemos tras hacer login en el sistema en la consola, y un shell interactivo es el que obtenemos, si estamos en modo gráfico y abrimos un xterm, o sea, una ventana de terminal. Para los shells de entrada o de login, primero se lee el fichero /etc/profile que contiene definiciones de variables y alias comunes a todos los usuarios del sistema. A continuación se lee el fichero ~/.bash_profile, en el directorio de cada usuario. En este fichero, cada usuario define sus variales y alias, que sobreescriben a los de /etc/profile.
Para los shells interactivos, sólo se lee el fichero ~/.bashrc, distinto para cada usuario. Puesto que reneralmente no se quiere una configuración distinta en un xterm o en una terminal de login.
Ahora si queremos guardar los cambios solo cambiamos el valor de la variable PS1 en el archivo ~/.bashrc de cada usuario para el shell interactivo y /etc/profile para un shell de login.

Fuente de informacion: Manual Linux eminentemente práctico, ZonaSiete.ORG