Di saya .bashrc, saya menggunakan kode warna terminal ANSI untuk mewarnai berbagai bit. Ini terlihat seperti ini:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
di mana virtual_envdan git_branchadalah fungsi bash yang menampilkan barang di stdout.
Sekarang, untuk membuatnya lebih mudah dibaca dan dimodifikasi, saya ingin menyimpan kode warna dalam variabel dan merujuknya, alih-alih menanamkannya langsung ke PS1. Jadi saya punya banyak variabel seperti ini:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Saya ingin dapat menulis sesuatu seperti:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Tapi ini tidak berhasil - kode warna muncul di prompt, seperti mereka melarikan diri. Warna berfungsi dengan benar jika saya menggunakan tanda kutip ganda sebagai gantinya PS1, tapi kemudian prompt hanya berubah ketika saya melakukannya source ~/.bashrc.
Saya sudah mencoba hal-hal lain saya pernah melihat orang melakukan - menggunakan printf, menggunakan tanda kutip tunggal untuk warna, menempatkan \[dan \]di PS1bukannya variabel warna, tapi sepertinya tidak ada pekerjaan.
Bagaimana saya bisa menggunakan variabel untuk kode warna?
.bashrc?