ข้อความต่อไปนี้เป็นจริง:
watchรันคำสั่งในเชลล์ใหม่, sh.
.bashrcนามแฝงlsว่าls --color=autoจะเปิดใช้งานสี
shไม่สืบทอดหรือใช้bashนามแฝง
ดังนั้นเมื่อwatchวิ่งไปlsมันไม่ได้ถามหาสี แต่เป็นรุ่นเก่าธรรมดา คุณสามารถหลีกเลี่ยงสิ่งนี้ แต่ - ตามที่ aditya ชี้ให้เห็น - คุณต้องเปิดใช้สีwatchเพื่อให้สามารถประมวลผลได้อย่างถูกต้อง
ตัวอย่างการทำงานสำหรับlsคือ:
watch --color -- ls --color=always
หากคุณไม่ผ่าน--colorการดูคุณจะเห็นรหัสสีน่าเกลียดมากมาย
ls --colorls --color=alwaysถูกตีความว่าเป็น
ls --color=auto ไม่พิมพ์สีในนาฬิกา นี่เป็นการชี้ให้เห็นว่ามันรองรับการใช้สีจากขั้วของมันเอง
สำหรับเหตุผลเพิ่มเติมว่าทำไมเราสามารถทดสอบว่าเชลล์นาฬิกาคิดว่าเป็นเทอร์มินัลตัวจริงหรือไม่ :
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
ฉันสงสัยว่ามีแอปพลิเคชั่นบางตัวกำลังดู (หรือคล้ายกัน) เพื่อบอกว่าควรเปิดสีหรือไม่