스크린 세션을 시작할 때 bash 프롬프트 색상 유지


11

우분투 루시드 상자에 넣을 때 프롬프트가 모두 예쁘고 색상이 있습니다. 내가 아는 한 모든 것이 기본값입니다. 다음은 $ 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에서 다음 줄을 편집 할 수 있습니다 (내 .bashrc에서 # 39입니다).

#force_color_prompt=yes

로 변경:

force_color_prompt=yes

색상이 지원되지 않는 곳에서 로그인하면 성 가실 수 있지만 가능성이 거의 없습니다.


완벽합니다. 색상이없는 곳에서 로그인하면 문제가되는 것을 볼 수 있지만, 이는 매우 드 rare니다. 감사!
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

Screen은 일반적으로 "screen"과 같은 특수 터미널 유형을 사용하거나 .screenrc에서 설정 한 경우 "screen-256color"를 사용합니다.

.bashrc에서 색상 감지 사례 설명을 찾아 화면을 목록에 추가하십시오.

예를 들면 다음과 같습니다.

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

256 색 터미널 유형을 사용하므로 xterm-256color, gnome-256color 및 screen-256color를 잡기 때문에 256 case 문만 있으면됩니다. 귀하의 마일리지가 다를 수 있습니다. 🙂


1

이것을 ~ / .screenrc에 추가하십시오

shell -$SHELL

+1. OS X의 멋진 bash 프롬프트가 다시 나타납니다.
funroll

0

화면을 호출하면 -T xterm저에게 효과적입니다.

screen -T xterm

파일을 수정할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.