การคงสีของพรอมต์ bash เมื่อเริ่มเซสชันหน้าจอ


11

เมื่อฉันลงในกล่อง Ubuntu Lucid พรอมต์จะสวยด้วยสี ทุกอย่างเป็นค่าเริ่มต้นเท่าที่ฉันรู้ นี่คือหน้าจอนอกของฉัน $ PS1:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@dev\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

ก่อนเชื่อมต่อกับหน้าจอ

แต่เมื่อฉันเริ่มหน้าจอสีหายไป ทุกอย่างอื่นดีและหน้าจอของฉันสามารถรองรับสี (สังเกตว่า.และ..ในนี้ls -alเป็นสีฟ้า) แต่ไม่พร้อมท์ ในทางทฤษฎีทุกอย่างควรจะเหมือนกัน $ PS1 ภายในหน้าจอ:

${debian_chroot:+($debian_chroot)}\u@dev:\w\$

หลังจากการตรวจคัดกรองใน

แก้ไข: นี่เป็นเพียงหน้าจอวานิลลาธรรมดา


หน้าจอวานิลลาธรรมดานี้หรือคุณติดตั้ง byobu อยู่หรือไม่? (แม้ว่าเรื่องนี้ไม่สำคัญ)
belacqua

2
ไม่echo $PS1พิมพ์หน้าจอภายในสิ่งที่เหมือนกันและหน้าจอด้านนอก?
Mikel

$ PS1 แตกต่างกันแน่นอน แก้ไขคำถามเพื่อรวมที่
chmullig

คำตอบ:


16

คุณสามารถแก้ไขบรรทัดต่อไปนี้ใน. bashrc ของคุณ (เป็น # 39 ใน. bashrc ของฉัน):

#force_color_prompt=yes

เปลี่ยนไป:

force_color_prompt=yes

นี่อาจเป็นเรื่องที่น่ารำคาญถ้าคุณลงชื่อเข้าใช้จากที่ไหนสักแห่งที่ไม่รองรับสี แต่ฉันคิดว่ามันไม่น่าเป็นไปได้


สมบูรณ์แบบที่ทำเพื่อฉัน ฉันเห็นว่ามันเป็นปัญหาหากฉันลงชื่อเข้าใช้จากที่อื่นที่ไม่มีสี แต่มันก็ค่อนข้างหายาก ขอบคุณ!
chmullig

การเปลี่ยนแปลงจำเป็นต้องทำบนเครื่องเซิร์ฟเวอร์ไม่ใช่ไคลเอนต์
Adam Ryczkowski

3

.screenrcไฟล์ลึกลับให้ฉัน ฉันเป็น gobbledygook ที่ฉันคัดลอกจากต่างประเทศ อย่างไรก็ตามฉันเห็นสองสามบรรทัดที่เกี่ยวข้องกับปัญหาของคุณ:

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I" 
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

ฉันคิดว่าถ้าคุณเพิ่มบรรทัดด้านบนให้กับคุณคุณจะได้สี นี่คือทั้งหมดของฉัน.screenrcสำหรับการอ้างอิง:

jake@daedalus:~$ cat .screenrc 
startup_message off # skip splash screen
vbell off # Kill the annoying dog

# Voodoo
hardstatus alwayslastline
hardstatus string '%{= wk}%-Lw%{= KW}%50>%n%f* %t%{= dK}%+Lw%<'

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I" 
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
# erase background with current bg color 
defbce "on"

2

คุณPS1ตั้งค่าควรจะอยู่ในที่ไม่.bashrc.bash_profile

หากที่ไม่ได้เป็นปัญหาโปรดแก้ไขคำถามของคุณที่จะรวมถึงเส้นที่คุณได้ตั้งPS1ไป

คุณสามารถลองใช้งานสิ่งเหล่านี้ได้:

echo "$TERM"                                 # will probably print "screen"
tput setaf 2 | cat -vte                      # should print "^[[32m"
echo "$(tput setaf 2)"green"$(tput sgr0)"    # should print "green" in green

2

โดยปกติหน้าจอจะใช้ชนิดเทอร์มินัลพิเศษเช่น "หน้าจอ" หรือหากคุณตั้งค่าไว้ใน. screenrc ของคุณ "screen-256color"

เพียงแค่ดูใน. bashrc ของคุณเพื่อดูคำสั่ง case case color และเพิ่มหน้าจอลงในรายการ

ตัวอย่างเช่นสิ่งนี้:

case "$TERM" in
    xterm)
        color_prompt=yes
        ;;
    screen)
        color_prompt=yes
        ;;
    *256*) 
        color_prompt=yes
        ;;
esac

ฉันใช้ชนิดเทอร์มินัล 256 สีดังนั้นฉันแค่ต้องการคำสั่ง case 256เพราะมันจับ xterm-256color, gnome-256color และ screen-256color ไมล์สะสมของคุณอาจแตกต่างกันไป 🙂



0

หน้าจอการเรียกใช้-T xtermงานสำหรับฉันดังนั้นเพียง:

screen -T xterm

ไม่จำเป็นต้องแก้ไขไฟล์ใด ๆ

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