1 votes

Impossible d'obtenir l'invite colorée malgré la définition de PS1 dans .bashrc

L'une des machines sur laquelle je me connecte via ssh ne me donne pas d'invite colorée, bien que je l'aie configurée via .bashrc . En .bashrc La partie en question est

# 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

et je l'utilise sur plusieurs autres machines avec le résultat escompté.

Je ne sais pas pourquoi cet ordinateur n'utilise pas cette fonction. .bashrc . Si j'utilise

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

(la ligne ci-dessus), mon invite obtient le format souhaité. /etc/bash.bashrc existe, également /etc/profile les deux me semblent corrects.

De même, si je me connecte à cet ordinateur par ssh, le titre xterm n'est pas défini. Normalement, il est défini sur user@host pour cette machine. Je soupçonne la même cause fondamentale, mais je ne sais pas où chercher.

2voto

Sanjay Prajapat Points 847

En utilisant ssh, vous obtenez le login Shell.

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

Assurez-vous donc que ce fichier existe dans le répertoire personnel de l'utilisateur sous lequel vous essayez de vous connecter. S'il n'existe pas, créez le fichier et forcez le à lire le code de l'utilisateur. ~/.bashrc en tapant ce qui suit -

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X