ในของ.bashrc
ฉันฉันใช้รหัสสีเทอร์มินัล ANSI เพื่อ colorize บิตต่าง ๆ ดูเหมือนว่านี้:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
ที่ไหนvirtual_env
และgit_branch
ฟังก์ชั่นทุบตีสิ่งที่ส่งออกใน stdout
ตอนนี้เพื่อให้ง่ายต่อการอ่านและแก้ไข, PS1
ฉันต้องการที่จะเก็บรหัสสีในตัวแปรและหมายถึงพวกเขาแทนการฝังพวกเขาโดยตรงใน ดังนั้นฉันจึงมีตัวแปรหลายอย่างเช่นนี้:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
ฉันต้องการที่จะสามารถเขียนสิ่งที่ชอบ:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
แต่วิธีนี้ใช้ไม่ได้ - รหัสสีจะแสดงขึ้นมาในพรอมต์ราวกับว่ามันกำลังหลบหนี สีที่ทำงานอย่างถูกต้องถ้าผมใช้คำพูดสองแทนแต่แล้วก็พรอมต์เพียงการเปลี่ยนแปลงเมื่อฉันทำPS1
source ~/.bashrc
ฉันได้พยายามสิ่งอื่น ๆ ที่ผมเคยเห็นคนทำ - การใช้printf
และไม่ใช้คำพูดเดียวสำหรับสีวาง\[
และ\]
ในPS1
แทนของตัวแปรสี แต่ไม่มีอะไรน่าจะทำงาน
ฉันจะใช้ตัวแปรสำหรับรหัสสีได้อย่างไร
.bashrc
?