Actualmente estoy usando Fedora 18 gnome-terminal , luego comencé el tmux
multiplexor en él. Después de conectarme a un servidor CentOS 5 mediante un ssh
comando, encuentro:
ls
el resultado no tiene colortmux
,screen
,hexedit
,htop
Todo no se pudo iniciar con el mensaje de error como:terminal abierto fallido: terminal faltante o inadecuado: screen-256color
Parece que ssh
pasa la variable de entorno $ TERM al servidor, pero no puedo encontrarla en el /etc/ssh/ssh_config
archivo de Fedora 18.
Aunque puedo cambiar manualmente la variable $ TERM en el servidor, cada vez que me conecto, sucede nuevamente. Entonces, ¿cómo prevenirlo?
fuente
infocmp
ytic
, una vez compilado, no es necesario cambiarlo temporalmente de$TERM
nuevo. por cierto, acabo de copiar (rsync)/usr/share/terminfo/s/screen-256color
de Fedora 18 a CentOS, parece que funciona bien (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
en gnome-terminal de Fedora 18,tmux
cambiado$TERM
valor ascreen-256color
partir dexterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
se puede acortar ainfocmp | ssh root@remote-host "tic -"
. Esto funciona porque cuando tiene una tubería, se puede acceder como un archivo mediante el uso, y afortunadamente, las tuberías funcionan a través de SSH.tic
archivos generados (compilador terminfo) será el mismo de un sistema a otro o que su ubicación será la misma.tic
también puede asegurarse de que los permisos sean correctos o crear directorios intermedios donde sea necesario.En mi caso, simplemente agregué un alias a mi
.zshrc
(.bashrc
si uso bash) en mi escritorio local:Si ya usa un alias, ajústelo para incluir la asignación de entorno.
fuente
Puse esto en mi
.bashrc
en el host remoto:De esa manera, ambos
xterm-256color
yscreen-265color
se manejan adecuadamente. Además, tengo la salida de la nota para que si el servidor se actualiza más tarde y admite 256 colores, no terminaré golpeando mi cabeza contra la pared preguntándome por qué mi variable TERM se cambia cuando SSHing.fuente
export TERM=${TERM%%-256color}
El cambio
$TERM
podría funcionar, pero no sugiero esto, es solo una solución en lugar de una solución.Cuando encuentro este problema en mis sistemas, lo soluciono instalando soporte para los tipos de terminales más comunes en el sistema remoto:
yum install ncurses-base
parascreen-256color
en CentOSyum install ncurses-term
parascreen-256color-bce
en CentOSapt install ncurses-base
para ambosscreen-256color
yscreen-256color-bce
en Debian, Ubuntu y MintLos paquetes relacionados con ncurses también proporcionan soporte para muchos otros terminales, y también están disponibles en todas las demás distribuciones grandes. (Pero para mi caso de uso y su pregunta, esta debería ser suficiente información)
fuente
Ver man ssh_config:
y man sshd_config:
De acuerdo con eso, el valor predeterminado debería ser no enviar ninguna variable, pero TERM parece ser especial. Se envía de todos modos.
Por lo tanto, puede cambiar TERM al llamar a ssh (like
TERM=xterm ssh ...
), cambiarlo después de iniciar sesión (like in.bash_profile
) o definir el tipo de TERM desconocido en el lado del servidor (suponiendo que tenga acceso root allí). Ver otra respuesta para más detalles.fuente
$TERM
embargo, no establecer realmente no será mejor que establecerlo en un valor no compatible.$TERM
temporalmente puede ser una solución, pero necesito hacerlo cada vez. por cierto, parece que ambos CentOS 5 y Fedora 18 Aceptar Env todas las variables de entorno local (LANG
,LC_*
, ...)