Las siguientes afirmaciones son verdaderas:
watch
Ejecuta el comando en un nuevo shell, sh
.
.bashrc
alias ls
como ls --color=auto
para permitir a los colores.
sh
no hereda ni usa bash
alias.
Entonces, cuando se watch
ejecuta ls
, no está pidiendo colores, solo está ejecutando la versión antigua simple. Puede eludir esto, pero, como señala aditya, también debe habilitar los colores watch
para que los procese correctamente.
Un ejemplo de trabajo para ls
es:
watch --color -- ls --color=always
Si no pasa --color
a mirar, verá un montón de códigos de colores feos en línea.
ls --color
se interpreta como ls --color=always
.
ls --color=auto
No imprime color en el reloj. Esto sugiere que infiere soporte de color desde el terminal en sí.
Para obtener más información sobre el motivo, podemos probar si el shell del reloj cree que es un terminal real :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Sospecho que algunas aplicaciones están mirando eso (o similar) para saber si deberían activar los colores o no.