Giữ lại màu nhắc bash khi bắt đầu phiên màn hình


11

Khi tôi ssh vào một hộp Ubuntu Lucid, dấu nhắc rất đẹp, với màu sắc. Tất cả mọi thứ là mặc định, theo như tôi biết. Đây là màn hình bên ngoài $ PS1 của tôi:

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

Trước khi kết nối với màn hình

Nhưng sau khi tôi bắt đầu, màn hình sẽ biến mất. Mọi thứ khác đều ổn và màn hình của tôi có thể hỗ trợ màu sắc (lưu ý rằng ...trong đây ls -allà màu xanh) nhưng lời nhắc thì không. Về lý thuyết mọi thứ nên giống hệt nhau. $ PS1 bên trong màn hình:

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

sau khi sàng lọc trong

EDIT: Đây chỉ là màn hình vanilla đơn giản.


Đây có phải là màn hình vanilla đơn giản, hoặc bạn đã cài đặt byobu chưa? (Mặc dù vấn đề này không quan trọng.)
belacqua

2
echo $PS1in cùng một thứ bên trong màn hình và bên ngoài màn hình?
Mikel

$ PS1 thực sự khác biệt. Câu hỏi được chỉnh sửa để bao gồm điều đó.
chmullig

Câu trả lời:


16

Bạn có thể chỉnh sửa dòng sau trong .bashrc của bạn (đó là # 39 trong .bashrc của tôi):

#force_color_prompt=yes

Thay đổi thành:

force_color_prompt=yes

Điều này có thể gây khó chịu nếu bạn đăng nhập từ một nơi không hỗ trợ màu sắc, nhưng tôi thấy nó rất khó xảy ra.


Hoàn hảo, điều đó đã làm cho tôi. Tôi có thể thấy nó có vấn đề nếu tôi tình cờ đăng nhập từ một nơi không có màu, nhưng điều đó sẽ khá hiếm. Cảm ơn!
chmullig

Việc thay đổi cần phải được thực hiện trên máy chủ chứ không phải máy khách.
Adam Ryczkowski

3

Các .screenrctập tin là một bí ẩn đối với tôi. Của tôi là gobbledygook mà tôi sao chép từ các internets. Tuy nhiên, tôi thấy một vài dòng có vẻ liên quan đến vấn đề của bạn:

# 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'

Tôi nghĩ rằng nếu bạn thêm các dòng trên vào của bạn, bạn sẽ có được màu sắc. Đây là toàn bộ của tôi .screenrcđể tham khảo:

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

PS1Cài đặt của bạn nên được đặt trong .bashrc, không .bash_profile.

Nếu đó không phải là vấn đề, vui lòng chỉnh sửa câu hỏi của bạn để bao gồm dòng bạn đã đặt PS1.

Bạn cũng có thể thử chạy chúng:

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

Màn hình thường sử dụng loại thiết bị đầu cuối đặc biệt, chẳng hạn như "màn hình" hoặc nếu bạn đặt nó trong .screenrc, "screen-256color".

Chỉ cần xem .bashrc của bạn để biết tuyên bố trường hợp phát hiện màu và thêm màn hình vào danh sách.

Ví dụ, một cái gì đó như thế này:

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

Tôi sử dụng các loại thiết bị đầu cuối 256 màu, vì vậy tôi chỉ cần câu lệnh 256 , vì nó bắt được xterm-256color, gnome-256color và screen-256color. Số dặm của bạn có thể thay đổi. 🙂


1

Thêm phần này vào ~ / .screenrc của bạn

shell -$SHELL

+1. Điều này đã đưa tôi trở lại lời nhắc bash đẹp mắt của tôi trên OS X.
funroll

0

Gọi màn hình với -T xtermcác tác phẩm cho tôi, vì vậy chỉ cần:

screen -T xterm

Không cần phải sửa đổi bất kỳ tập tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.