ฉันปรับแต่ง bash PS1
prompt ของฉันด้วยไฟล์ ~ / .bashrcนี้ ฉันไม่สามารถหาเหตุผลได้ว่าทำไมสีเอาต์พุตของฉันเปลี่ยนไปหลังจากเอาต์พุต 2 บรรทัดแรก
ความคิดเห็นใดที่อาจเป็นสาเหตุของปัญหา
ฉันปรับแต่ง bash PS1
prompt ของฉันด้วยไฟล์ ~ / .bashrcนี้ ฉันไม่สามารถหาเหตุผลได้ว่าทำไมสีเอาต์พุตของฉันเปลี่ยนไปหลังจากเอาต์พุต 2 บรรทัดแรก
ความคิดเห็นใดที่อาจเป็นสาเหตุของปัญหา
คำตอบ:
ปัญหาน่าจะเป็นที่ว่าไม่มีลำดับหนีการตั้งค่าสีในตอนท้ายของพรอมต์ดังนั้นข้อความคำสั่งเป็นสีเพราะล่ามไม่ทราบว่าจะหยุดการระบายสี \[\033[0m\]
คุณจำเป็นต้องผนวกลำดับหนีนี้ในตอนท้ายของพรอมต์ของคุณ ดังนั้นลำดับของคุณจะเป็นดังนี้:
"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $\[\033[0m\] "
คุณสามารถเชื่อมโยงลำดับนี้กับตัวแปรเพิ่มลงในนิยามฟังก์ชันพร้อมต์และใช้กับนิยามสีอื่น ๆ :
local RESET="\[\033[0m\]"
ดังนั้นพรอมต์จะเป็น:
"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $${RESET} "
สำหรับการอ่านเพิ่มเติมคุณควรอ่านบทความColor Bash Prompt Arch Wiki
เนื่องจากls
กำลังใช้--color=...
งานอยู่และส่งการควบคุม esc เพื่อลบสีที่ปลายบรรทัด
ลอง: ls -l --color=none
ตัวอักษรจะเป็นสีขาวทั้งหมด