В настоящее время я использую терминал Fedora 18 gnome , затем запустил tmux
мультиплексор в нем. После того, как я подключился к серверу CentOS 5 через ssh
команду, я нахожу:
ls
результат не имеет цветаtmux
,screen
,hexedit
,htop
Все они не смогли начать с сообщением об ошибке , как:не удалось открыть терминал: отсутствует или не подходит терминал: screen-256color
Кажется, что ssh
передает переменную среды $ TERM на сервер, но я не могу найти ее в /etc/ssh/ssh_config
файле Fedora 18.
Хотя я могу вручную изменить переменную $ TERM на сервере, при каждом подключении это происходит снова. Так как это предотвратить?
источник
infocmp
иtic
, после компиляции, не нужно временно менять$TERM
снова. Кстати, я только что скопировал (rsync)/usr/share/terminfo/s/screen-256color
из Fedora 18 в CentOS, кажется, работает нормально (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
в gnome-терминал Fedora 18,tmux
изменил$TERM
значениеscreen-256color
сxterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
можно сократить доinfocmp | ssh root@remote-host "tic -"
. Это работает, потому что когда у вас есть канал, к нему можно получить доступ как к файлу с помощью - и, к счастью, каналы работают через SSH.tic
сгенерированных файлов (компилятор terminfo) будет одинаковым для разных систем или их расположение будет одинаковым.tic
может также убедиться, что разрешения правильные или создать промежуточные каталоги, где это необходимо.В моем случае я просто добавил псевдоним к своему
.zshrc
(.bashrc
при использовании bash) на локальном рабочем столе:Если вы уже используете псевдоним, настройте его, чтобы включить назначение среды.
источник
Я положил это в моем
.bashrc
на удаленном хосте:Таким образом, оба
xterm-256color
иscreen-265color
обрабатываются правильно. Кроме того, он выводит примечание, так что если сервер будет обновлен позже и будет поддерживать 256 цветов, я не буду биться головой о стену, удивляясь, почему моя переменная TERM изменяется при SSHing.источник
export TERM=${TERM%%-256color}
Изменение
$TERM
может сработать, но я не предлагаю этого, это всего лишь обходной путь вместо решения.Когда я сталкиваюсь с этой проблемой в своих системах, я исправляю ее, устанавливая поддержку наиболее распространенных типов терминалов в удаленной системе:
yum install ncurses-base
дляscreen-256color
на CentOSyum install ncurses-term
дляscreen-256color-bce
на CentOSapt install ncurses-base
для обоихscreen-256color
иscreen-256color-bce
на Debian, Ubuntu и монетный дворПакеты, связанные с ncurses, также поддерживают множество других терминалов, и они также доступны во всех других крупных дистрибутивах. (Но для моего варианта использования и вашего вопроса должно хватить информации)
источник
Смотрите man ssh_config:
и man sshd_config:
В соответствии с этим, по умолчанию не должно отправляться никаких переменных, но TERM кажется особенным. Это все равно отправлено.
Поэтому вы можете изменить TERM при вызове ssh (например
TERM=xterm ssh ...
), изменить его после входа в систему (например, in.bash_profile
) или определить неизвестный тип TERM на стороне сервера (при условии, что у вас есть root-доступ). Смотрите другой ответ для деталей.источник
$TERM
не будет лучше, чем установка неподдерживаемого значения.$TERM
временное изменение может быть обходным путем, но мне нужно делать это каждый раз. кстати, кажется , что оба CentOS 5 и Fedora 18 Accept ENV все переменные окружения локали (LANG
,LC_*
, ...)