Збереження кольорів підказки під час запуску сеансу на екрані


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\$

після екранування в

EDIT: Це просто звичайний екран ванілі.


Це звичайний ванільний екран, чи у вас встановлений byobu? (Хоча це питання не має значення.)
belacqua

2
Чи echo $PS1друкує одне й те саме на екрані та зовнішньому екрані?
Мікель

$ PS1 дійсно відрізняється. Відредаговане питання, щоб включити це.
chmullig

Відповіді:


16

Ви можете відредагувати наступний рядок у своєму .bashrc (це номер 39 в моєму .bashrc):

#force_color_prompt=yes

Перейти:

force_color_prompt=yes

Це може бути прикро, якщо ви ввійдете звідкись, де колір не підтримується, але я вважаю це малоймовірним.


Ідеально, що це зробило для мене. Я бачу, що це проблематично, якщо мені трапиться зайти звідкись без кольору, але це буде досить рідко. Дякую!
chmullig

Зміни потрібно зробити на серверній машині, а не на клієнті.
Адам Річковський

3

.screenrcФайл є для мене загадкою. Моя - це гоблейгок, який я копіюю з інтернетів. Однак я бачу кілька рядків, які здаються актуальними для вашої проблеми:

# 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 "$TERM" in
    xterm)
        color_prompt=yes
        ;;
    screen)
        color_prompt=yes
        ;;
    *256*) 
        color_prompt=yes
        ;;
esac

Я використовую 256-кольорові термінальні типи, тому мені просто потрібний оператор 256 , оскільки він вловлює xterm-256color, gnome-256color і screen-256color. Ваш пробіг може відрізнятися. 🙂


1

Додайте це до свого ~ / .screenrc

shell -$SHELL

+1. Це повернуло мені мій приємний вигляд баш-підказки на OS X.
funroll

0

Екран -T xtermдля виклику з роботами для мене, так що просто:

screen -T xterm

Не потрібно змінювати жодні файли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.