
Estoy usando Ubuntu y puedo cambiar manualmente el bash
color del indicador del shell averdeusando
export PS1="\e[0;32m[\u@\h \W]\$ \e[m"
Sin embargo, quiero que el color del indicador de shell cambie automáticamente cada vez que abro una nueva terminal o pestaña. Soy consciente de que el tty TERM básico tiene 16 colores y está bien rotar los colores si hay más de 16 terminales abiertos. ¿La solución también funcionará cuando me conecte a través de Putty
, tmux
o screen
.
Mi idea es escribir un shell
script y colocarlo en .bashrc
el que detecte la nueva sesión de terminal que el usuario ha abierto e incremente un contador global de \e[0;31m[
a \e[0;47m[
. ¿Cómo detectar el número de terminales abiertos por el usuario?
Respuesta1
Contar los terminales (ej: who - a | grep user | wc -l
) no funcionará: cuando uno o varios shells están cerrados, el número total disminuye y el nuevo terminal puede coincidir con otro ya abierto.
Simplemente deberías tener un contador:
Si quieres 6 colores en total:
touch ~/.colornumber
new=$(awk '(NR==1) { print ($1 + 1) % 6; }' ~/.colornumber)
echo $new > ~/.colornumber
#and use color number $new for your current terminal, for example defined in an array of 6 entries.
# just note here that color 0 is for the 6th terminal, not the first... or change the awk above