次のことが当てはまります。
watch
新しいシェルでコマンドを実行しsh
ます。
.bashrc
別名ls
としては、ls --color=auto
色を有効にします。
sh
bash
エイリアスを継承または使用しません。
したがって、watch
実行時ls
に色を要求するのではなく、単純に古いバージョンを実行します。これを回避することはできますが、adityaが指摘しているようにwatch
、適切に処理するには色を有効にする必要があります。
の実用的な例ls
は次のとおりです。
watch --color -- ls --color=always
あなたは合格しない場合は--color
見て、あなたはインライン醜いカラーコードの束が表示されます。
ls --color
として解釈されls --color=always
ます。
ls --color=auto
時計で色を印刷しません。これは、端末自体からカラーサポートを推測していることを示しています。
理由の詳細については、時計のシェルが実際の端末と見なしているかどうかをテストできます。
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
一部のアプリケーションは、色をオンにする必要があるかどうかを判断するためにその(または同様の)ものを見ているのではないかと思います。