สีเอาต์พุตพรอมต์ของ Bash จะเปลี่ยนไปหลังจากเอาท์พุท 2 บรรทัดแรก


1

ฉันปรับแต่ง bash PS1prompt ของฉันด้วยไฟล์ ~ / .bashrcนี้ ฉันไม่สามารถหาเหตุผลได้ว่าทำไมสีเอาต์พุตของฉันเปลี่ยนไปหลังจากเอาต์พุต 2 บรรทัดแรก

bash output

ความคิดเห็นใดที่อาจเป็นสาเหตุของปัญหา

คำตอบ:


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


1

เนื่องจากlsกำลังใช้--color=...งานอยู่และส่งการควบคุม esc เพื่อลบสีที่ปลายบรรทัด

ลอง: ls -l --color=noneตัวอักษรจะเป็นสีขาวทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.