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


11

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

画面に接続する前に

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

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

スクリーニング後

編集:これは単なるプレーンバニラスクリーンです。


この単純なバニラスクリーンですか、それともbyobuがインストールされていますか (これは問題ではありませんが)
belacqua

2
echo $PS1、画面外の画面内で同じことを印刷?
ミケル

$ PS1は確かに異なります。それを含むように質問を編集しました。
chmullig

回答:


16

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

#force_color_prompt=yes

への変更:

force_color_prompt=yes

色がサポートされていない場所からログインすると、これは煩わしいかもしれません。


完璧です。色なしでどこかからログインすると問題があることがわかりますが、それは非常にまれです。ありがとう!
chmullig

変更は、クライアントではなくサーバーマシンで行う必要があります。
Adam Ryczkowski、2012年

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

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


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.