Estoy intentando personalizar mi símbolo bash, para que obtenga esto:
es decir, el texto de usuario está en negrita, pero stdout no lo es.
Funcionaba, pero después de actualizar mi mac está fallando.
Máquina A: MacBook Pro 2017 ejecutando Ventura. Máquina B: MacBook Pro M2 ejecutando Sonoma (Pre-Lanzamiento).
Mi símbolo bash PS1 (definido en ~/.bash_profile) está definido así:
function rgb {
# https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
let "sum = 16 + 36*$1 + 6*$2 + $3"
# echo "\[\e[${sum}m\]"
tput setaf ${sum}
}
BOLD=$(tput bold)
DIM=$(tput dim)
RESET=$(tput sgr0)
BRIGHT=$(rgb 5 5 5)
BLUE=$(rgb 1 1 5)
YELLOW=$(rgb 4 4 1)
PS1="\n"
PS1+=" \[${DIM}\]"
PS1+="\u"
PS1+="${BRIGHT}@"
PS1+="\[${BRIGHT}\]"
PS1+="\h "
PS1+="\[${BLUE}\]"
PS1+="\w "
PS1+="\n"
PS1+="\[${BRIGHT}\]"
PS1+="> "
PS1+="\[${BOLD}\]"
En la Máquina A funciona:
En la Máquina B, no del todo:
Y no puedo entender por qué.
En una máquina dada hay consistencia entre Terminal.app, iTerm2 y Terminal Integrado de VSCode.
Así que volví a lo básico, y descubrí que en ambas máquinas, esto funciona correctamente:
> echo -e "\033[32mEsto debería ser verde\033[0m"
... mientras que esto falla (sale en blanco):
> tput setaf 2; echo "Esto debería ser verde"
Me sorprende observar este comportamiento en la máquina A, después de tantos años sin notar ningún problema.
Entonces, me enfrento a dos enigmas:
- ¿por qué está fallando mi símbolo en la máquina B
- ¿por qué falla ese
tput
en ambas máquinas?
¿Debería simplemente evitar tput aquí? Supongo que solo lo hice porque se ve más limpio que las secuencias de escape.