web-dev-qa-db-ja.com

.bashrcにPS1を設定しているにもかかわらず、色付きのプロンプトを取得できない

.bashrcで設定したにもかかわらず、sshでログインしたマシンの1つで色付きのプロンプトが表示されません。問題の.bashrc部分は

# set a fancy Prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_Prompt=yes;;
esac

# uncomment for a colored Prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the Prompt
force_color_Prompt=yes

if [ -n "$force_color_Prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_Prompt=yes
    else
        color_Prompt=
    fi
fi

if [ "$color_Prompt" = yes ]; then
    if [ $(id -u) -eq 0 ];
    then # you are root, make the Prompt red
        PS1='${debian_chroot:+($debian_chroot)}\[\e[00;33m\]\u\[\e[00m\]@\[\e[00;34m\]\h\[\e[00m\]:\[\e[00;36m\]\w\[\e[00m\]\e[01;31m#\e[00m '
    else
        PS1='${debian_chroot:+($debian_chroot)}\[\e[00;32m\]\u\[\e[00m\]@\[\e[00;34m\]\h\[\e[00m\]:\[\e[00;36m\]\w\[\e[00m\]$ '
    fi
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_Prompt force_color_Prompt

そして、他のいくつかのマシンでそれを使用して、希望する結果を得ました。

この特定のコンピューターがこの.bashrcを使用しない理由はわかりません。私が使用する場合

export PS1='${debian_chroot:+($debian_chroot)}\[\e[00;32m\]\u\[\e[00m\]@\[\e[00;34m\]\h\[\e[00m\]:\[\e[00;36m\]\w\[\e[00m\]$ '

(上記の行)、私のプロンプトは目的の形式を取得します。 /etc/bash.bashrcが存在し、/etc/profileもありますが、どちらも私には問題ありません。

また、このコンピューターにsshしても、xtermのタイトルが設定されません。通常、このマシンのuser @ Hostに設定されます。私は同じ根本原因を疑いますが、どこを見ればいいのか分かりません。

1
emk2203

Sshの使用中に、ログインシェルを取得しています。

~/.profileから

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login exists.

したがって、ログインしようとしているユーザーのホームディレクトリにこのファイルが存在することを確認してください。存在しない場合は、ファイルを作成し、これを入力して~/.bashrcファイルを強制的に読み取ります-

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi
2
Sanjay Prajapat