Não é possível obter o prompt colorido apesar da configuração do PS1 em .bashrc

1

Uma das máquinas que eu logar via ssh não me dá um prompt colorido, apesar de configurá-lo via .bashrc . A parte .bashrc em questão é

# 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

e eu uso em várias outras máquinas com o resultado desejado.

Não tenho ideia do motivo pelo qual esse computador em particular não usa esse .bashrc . Se eu usar

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

(a linha acima), meu prompt recebe o formato desejado. /etc/bash.bashrc existe, também /etc/profile , ambos parecem OK para mim.

Além disso, se eu fizer ssh neste computador, o título do xterm não será definido. Normalmente, ele é definido como user @ host para esta máquina. Eu suspeito da mesma causa, mas não tenho a menor idéia de onde procurar.

    
por emk2203 13.02.2018 / 18:19

1 resposta

2

Ao usar o ssh, você está recebendo o shell de login.

De ~/.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.

Portanto, verifique se esse arquivo existe no diretório inicial do usuário no qual você está tentando efetuar login. Se não existir, crie o arquivo e force-o a ler o arquivo ~/.bashrc , digitando isto -

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi
    
por Sanjay Prajapat 13.02.2018 / 20:03