web-dev-qa-db-ja.com

スクリーンセッションの開始時にbashプロンプトの色を保持する

Ubuntu Lucidボックスにsshすると、プロンプトはすべてき​​れいで、色が付いています。私の知る限り、すべてがデフォルトです。これが私の$ PS1外部画面です。

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

Before connecting with screen

しかし、その後、スクリーンを起動すると色が消えます。それ以外はすべて問題なく、私の画面は色をサポートできます(この...およびls -alは青色であることに注意してください)が、プロンプトはそうではありません。理論的には、すべてがまったく同じでなければなりません。画面内の$ PS1:

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

after screening in

編集:これは単なるバニラ画面です。

8
chmullig

.bashrcで次の行を編集できます(私の.bashrcでは#39です)。

#force_color_Prompt=yes

への変更:

force_color_Prompt=yes

色がサポートされていない場所からログインした場合、これはおそらく煩わしいかもしれません。

13
LasseValentini

.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"
3
djeikyb

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
Mikel

Screenは通常、「screen」などの特別な端末タイプを使用するか、.screenrcで「screen-256color」に設定した場合。

.bashrcで色検出caseステートメントを探し、リストに画面を追加するだけです。

たとえば、次のようなもの:

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ステートメントが必要です。あなたのマイレージは異なる場合があります。 ????

2
m0j0

これを〜/ .screenrcに追加します

Shell -$Shell
1
Cam

-T xtermを使用して画面を呼び出すとうまくいきます。

screen -T xterm

ファイルを変更する必要はありません。

0
twildfarmer