Các tuyên bố sau là đúng:
watch
chạy lệnh trong một vỏ mới , sh
.
.bashrc
bí danh ls
như ls --color=auto
để kích hoạt màu sắc.
sh
không kế thừa hoặc sử dụng bash
bí danh.
Vì vậy, khi watch
chạy ls
, nó không yêu cầu màu sắc, nó chỉ chạy phiên bản cũ đơn giản. Bạn có thể phá vỡ điều này nhưng vì Aditya chỉ ra rằng bạn cũng cần bật màu watch
cho nó để xử lý chúng đúng cách.
Một ví dụ hoạt động cho ls
là:
watch --color -- ls --color=always
Nếu bạn không vượt qua --color
để xem, bạn sẽ thấy một loạt các mã màu xấu xí.
ls --color
được hiểu là ls --color=always
.
ls --color=auto
không in màu trong đồng hồ. Điều này cho thấy rằng nó suy ra hỗ trợ màu từ chính thiết bị đầu cuối.
Để biết thêm về lý do tại sao, chúng ta có thể kiểm tra xem vỏ đồng hồ có nghĩ là thiết bị đầu cuối thực sự hay không :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Tôi nghi ngờ rằng một số ứng dụng đang xem xét điều đó (hoặc tương tự) để cho biết liệu chúng có nên bật màu hay không.