web-dev-qa-db-fra.com

Comment obtenir un terminal de couleur sur ssh?

Lorsque je me connecte via ssh à des hôtes distants, tout n’est qu’une seule police/couleur. Je voudrais avoir des couleurs comme je le fais localement, par exemple. vert pour l'exécutable et bleu pour les liens symboliques, etc. Et tel que lorsque je lance $ git diff sur l'hôte ssh, il me montre diff avec colors =)

52
Dima

Parce que c'était xterm sur le serveur, j'ai pensé que quelque chose n'allait pas avec .bashrc

Et en effet! ls --color=auto ne fonctionne que lorsque vous êtes connecté à TTY. Changer tout simplement --color dans .bashrc sur l'hôte distant et tout est maintenant dans de jolies couleurs.

34
Dima

Cela a fonctionné pour moi:

ssh -t my_Host my_command

-t était la clé. Expliqué .

18
juanpastas

On dirait que les couleurs ont déjà été définies dans ~/.bashrc pour moi et le problème est que ssh n'utilise pas le fichier bashrc. Vous pouvez utiliser bashrc dans votre session ssh en ajoutant ce qui suit à ~/.bash_profile:

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi
10
dariusz gorczynski

Quel est le contenu de votre variable env XTERM sur le serveur lorsque vous vous y connectez?

~ > export | grep -i term
TERM=xterm
7
Vedran Krivokuća

Dans mon cas, la partie manquante devait être de couleur ls, grep, etc., que l'on peut ajouter en ajoutant des alias au fichier .bashrc:

alias ls='ls --color=auto'
alias grep='grep --color=auto'

etc.

4
Stuart Clark

J'ai essayé de modifier les paramètres ~./bashrc (sur les serveurs local et distant), mais cela ne semblait pas fonctionner.

Ensuite, j'ai remarqué que le ~/.bashrc du serveur distant n'est même pas exécuté si je me connecte via ssh. J'ai donc créé ~/.bashrc du serveur distant à exécuter par puttinng if [ -f ~/.bashrc ]; then . ~/.bashrc fi dans le ~/.bash_profile du serveur distant. (basé sur https://stackoverflow.com/ questions/820517/bashrc-at-ssh-login ).

Cette solution n'a donc pas nécessité de modifier directement les fichiers ~/bashrc, mais elle a également nécessité de modifier le fichier ~/bash_profile du serveur distant afin que le fichier ~/bashrc du serveur distant soit exécuté.

2
chris544

Etant donné que les couleurs fonctionnaient bien tout en étant directement connectées, je n’ai pas commenté la ligne force_color_Prompt=yes dans le fichier ~/.bashrc, ce qui m’a également donné les couleurs sur ssh:

# 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

(Ubuntu 18.04 LTS)

1
hinneLinks

Dans ma situation, j’ai récemment installé chef-local et il m’a demandé d’ajouter une ligne à .bash_profile. Lorsque je me connecte, .bashrc ne se charge plus car il a vu .bash_profile.

Ce que j'ai fait est d'ajouter une ligne dans .bash_profile:

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

Je me suis déconnecté puis rentré et j'ai tout de suite eu mon terminal coloré.

1
Kevin

Il y a un commentaire de "Mike E" ci-dessus qui contenait la réponse pour moi, mais ce n'est pas seulement difficile à lire, c'est un peu difficile à comprendre ce qu'il veut dire si vous n'utilisez pas beaucoup .bashrc - et je ne 't.

Après avoir vissé un peu, j'ai obtenu les résultats souhaités en modifiant les lignes suivantes dans ~/.bashrc sur la machine à laquelle je me connectais avec ssh:

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

à:

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

Je pense que j'aurais pu simplement ajouter "| xterm" après "couleur" dans la première ligne, ou creuser pour comprendre pourquoi ssh utilisait "xterm" au lieu de "xterm-color" et changer cela, mais cela fonctionne et je ont d'autres choses à faire maintenant.

0
Mike Wise

Je perdais ma couleur lorsque je me connectais via un proxy car TERM=dumb alors je l'ai corrigé:

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"
0
ErichBSchulz