Die folgenden Aussagen sind wahr:
watchführt den Befehl in einer neuen Shell aus sh.
.bashrcAliase lsals ls --color=autozu Farben ermöglichen.
sherbt oder verwendet keine bashAliase.
Also , wenn watchläuft ls, ist es nicht für Farben gefragt, es läuft einfach die gute alte Version. Sie können dies umgehen, aber - wie aditya betont - müssen Sie auch Farben aktivieren, damit watchsie ordnungsgemäß verarbeitet werden können.
Ein Arbeitsbeispiel für lsist:
watch --color -- ls --color=always
Wenn Sie nicht vorbeikommen --color, um zu sehen, sehen Sie eine Reihe hässlicher Farbcodes inline.
ls --colorwird interpretiert als ls --color=always.
ls --color=auto druckt keine Farbe in der Uhr. Dies deutet darauf hin, dass die Farbunterstützung vom Terminal selbst abgeleitet wird.
Um mehr über den Grund zu erfahren, können wir testen, ob die Watch Shell ein echtes Terminal für Folgendes hält :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Ich vermute, dass einige Anwendungen dies (oder ähnliches) prüfen, um festzustellen, ob sie Farben aktivieren sollten oder nicht.