J'utilise actuellement Fedora 18 gnome-terminal , puis j'ai démarré le tmux
multiplexeur. Après m'être connecté à un serveur CentOS 5 via une ssh
commande, je trouve:
ls
le résultat n'a pas de couleurtmux
,screen
,hexedit
,htop
Tout n'a pas pu démarrer avec le message d'erreur comme:échec du terminal ouvert: terminal manquant ou inadapté: screen-256color
Il semble que ssh
la variable d'environnement $ TERM soit transmise au serveur, mais je ne la trouve pas dans le /etc/ssh/ssh_config
fichier de Fedora 18.
Bien que je puisse modifier manuellement la variable $ TERM sur le serveur, chaque fois que je me connecte, cela se reproduit. Alors comment l'empêcher?
la source
infocmp
ettic
, une fois compilé, pas besoin de changer à$TERM
nouveau temporairement . par ailleurs, je viens de copier (rsync)/usr/share/terminfo/s/screen-256color
de Fedora 18 vers CentOS, il semble que ça marche (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
dans gnome-terminal de Fedora 18,tmux
changé de la$TERM
valeur àscreen-256color
partir dexterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
peut être raccourciinfocmp | ssh root@remote-host "tic -"
. Cela fonctionne parce que lorsque vous avez un canal, il est accessible en tant que fichier en utilisant - et heureusement, les canaux fonctionnent sur SSH.tic
fichiers générés (compilateur terminfo) sera le même d'un système à l'autre ou que leur emplacement sera le même.tic
peut également s'assurer que les autorisations sont correctes ou créer des répertoires intermédiaires si nécessaire.Dans mon cas, j'ai simplement ajouté un alias à mon
.zshrc
(.bashrc
si vous utilisez bash) sur mon bureau local:Si vous utilisez déjà un alias, ajustez-le pour inclure l'affectation d'environnement.
la source
Je mets ceci dans mon
.bashrc
sur l'hôte distant:De cette façon, les deux
xterm-256color
etscreen-265color
sont gérés correctement. En outre, je l'ai sorti la note de sorte que si le serveur est mis à niveau plus tard et prend en charge 256 couleurs, je ne vais pas me cogner la tête contre le mur en me demandant pourquoi ma variable TERM est modifiée lors de la SSHing.la source
export TERM=${TERM%%-256color}
Changer
$TERM
pourrait fonctionner, mais je ne le suggère pas, c'est seulement une solution de contournement au lieu d'une solution.Lorsque je rencontre ce problème sur mes systèmes, je le résout en installant la prise en charge des types de terminaux les plus courants sur le système distant:
yum install ncurses-base
pourscreen-256color
sur CentOSyum install ncurses-term
pourscreen-256color-bce
sur CentOSapt install ncurses-base
pour les deuxscreen-256color
etscreen-256color-bce
sur Debian, Ubuntu et MintLes packages liés à ncurses prennent également en charge de nombreux autres terminaux, et ils sont également disponibles sur toutes les autres grandes distributions. (Mais pour mon cas d'utilisation et votre question, cela devrait suffire)
la source
Voir man ssh_config:
et man sshd_config:
Selon cela, la valeur par défaut devrait être de n'envoyer aucune variable, mais TERM semble être spécial. C'est envoyé quand même.
Par conséquent, vous pouvez soit changer TERM lors de l'appel de ssh (comme
TERM=xterm ssh ...
), le changer après la connexion (comme dans.bash_profile
), soit définir le type TERM inconnu côté serveur (en supposant que vous y ayez un accès root). Voir l'autre réponse pour plus de détails.la source
$TERM
ne pas définir ne sera pas vraiment mieux que de le définir sur une valeur non prise en charge.$TERM
temporairement peut être une solution de contournement, mais je dois le faire à chaque fois. par ailleurs, il semble que les deux CentOS 5 et Fedora 18 Encaisser Env toutes les variables d'environnement local (LANG
,LC_*
...)