Warna output Bash prompt berubah setelah 2 baris output pertama

1

Saya menyesuaikan bash PS1prompt saya dengan file ~ / .bashrc ini . Saya tidak tahu mengapa warna output saya berubah setelah 2 baris pertama output.

keluaran bash

Adakah ide yang dapat menyebabkan masalah ini?

Dan McClain
sumber

Jawaban:

2

Masalahnya tampaknya tidak ada urutan keluar untuk mereset warna pada akhir prompt, sehingga teks perintah juga berwarna karena penerjemah tidak tahu harus berhenti mewarnai. Anda harus menambahkan urutan pelarian ini di akhir prompt Anda \[\033[0m\]. Jadi urutan prompt Anda akan menjadi seperti:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $\[\033[0m\] "

Anda dapat mengaitkan urutan ini dengan variabel, menambahkannya ke definisi fungsi prompt dan menggunakannya seperti dengan definisi warna lainnya:

local RESET="\[\033[0m\]"

Dengan demikian, promptnya adalah:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $${RESET} "

Untuk bacaan lebih lanjut, Anda harus memeriksa artikel Wiki Lengkungan Color Bash Prompt .


sumber
1

Karena lsmenggunakan --color=..., dan mengirim kontrol esc untuk menghapus warna di garis akhir.

Cobalah ls -l --color=none:, karakternya akan berwarna putih semua.

Reinaldo Gil
sumber