Debian のデフォルトの bash シェルはなぜ無色なのですか?

Debian のデフォルトの bash シェルはなぜ無色なのですか?

デフォルトのDebianシェルがなぜ無色なのかを調べましたが、答えが見つかりませんでした。

Debian シェルが基本的に無色なのはなぜですか?

答え1

Debian シェルが基本的に無色なのはなぜですか?

したがって(.bashrc一般的なDebianインストールでは強調します):

#端末が可能な場合は、カラープロンプトのコメントを外してください。回って
#ユーザーの注意を気にしないように、デフォルトではオフになっています。ターミナルウィンドウに焦点を合わせます。
#プロンプトではなくコマンド出力に表示する必要があります。
#force_color_prompt=はい

if [-n "$force_color_prompt"];
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null;
    #Ecma-48に準拠していると仮定して色をサポートします。
    #(ISO/IEC-6429)。 (このような支援が足りない場合はごくまれです。
    #1つのケースはsetafよりもsetfを好む。 )
    color_prompt=はい
    その他
    カラーヒント=
    フィリピン諸島
フィリピン諸島

つまり、「機能」または必要に応じてデザインを選択します。

答え2

(質問の元のバージョンでは、ルートのシェルに関連していることを示唆していました。特にこれを知りたいユーザーに役立つ可能性があるため、ここに残します。)

ルートの場合、デフォルトのプロンプトは無色です。/etc/profile- またはむしろ/etc/bash.bashrc- 非常に単純なヒントを定義します。

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

そしてrootデフォルトは.bashrcオーバーライドせずに次のことを行います。

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

バラよりDebian システムでは、/root/.bashrc と /root/.profile はどこから来ましたか?詳細については。

答え3

これが「Debianでルートシェルに色合いを割り当てる方法」の検索の最上位の結果なので、ここにソリューションを公開します。/root/.bashrcファイルをコピーして上書きします/etc/skel/bashrc

このファイルはインストールされたファイルよりもはるかに強力であり、システムrootに作成された新しいユーザーのためのデフォルトファイルでもあります。

以下は、私が長年にわたって調整したls色の抜粋です。

alias la='LS_COLORS="mh=1;37" ls -A'
alias l='LS_COLORS="mh=1;37" ls -CF'
alias ll='LC_COLLATE=C LS_COLORS="mh=1;37" ls -lA --si --group-directories-first'

答え4

結局@daniel-sokolowskiの提案を受けて見てみました/etc/skel/.bashrc

しかし、bash文書によると、[ -z "$PS1" ]テストは対話型シェルと非対話型シェルを区別する一般的な方法であることに注意することが重要です。

これを追加すると

# part from /etc/skel/.bashrc
...
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

すべての種類のシェルを公開すると、PS1=次の非対話型コマンドが中断される可能性があります。

ssh your-server ls -la
bash completion on: scp ssh://foo:/bar/<TAB>
vim scp://your-server//some/file

このコマンドは、対話型シェルの一部であるスクリプトで不要なstdoutが発生した場合に中断されます。

この方法の完全な解決策は、[ ! -z "$PS1" ]テストでブロックをラップすることです。

...
if [ ! -z "$PS1" ]; then
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
fi
unset color_prompt force_color_prompt

関連情報