табуляция и клавиши со стрелками странное поведение в RedHat

Я сталкиваюсь с каким-то странным поведением при попытке подключиться к серверу по ssh с помощью Iterm2 или OSX Terminal. По сути, проблема заключается в том, что при использовании tab для автозаполнения в конце будет напечатан еще один случайный дополнительный символ, например:

//the 'e' is extra in this case
$ cd keys/e

А при попытке использовать любые клавиши со стрелками для навигации в принципе вообще не работает.

//^[[C^[[C^[[C^[[C^[[C^[[C^[[C are printed by pressing arrow keys
$ cd keys/^[[C^[[C^[[C^[[C^[[C^[[C^[[Ce

//Kernel Version
OS Version: 2.6.39-400.246.2.el6uek.x86_64

//Distribution Information
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.6 (Santiago)

Но он отлично работает на моем macbook, я предположил, что это вызвано настройкой профиля моего сервера, но я дважды проверил, что у меня дома нет ни одного из следующих файлов:

$ vi .bash_profile
$ vi .bashrc

Любая помощь будет оценена.


person Jack Zhang    schedule 13.05.2016    source источник
comment
Вопрос неясен, потому что ^[[C (стрелка вправо) не используется для навигации в оболочке. Возможно, вы столкнулись с некоторыми проблемами, связанными с несоответствием терминала и настройки TERM, но нет подробностей, которые могли бы помочь людям ответить.   -  person Thomas Dickey    schedule 14.05.2016
comment
Когда я говорю navigation, я имею в виду навигацию между символами, которые я набрал в команде, например.   -  person Jack Zhang    schedule 16.05.2016


Ответы (2)


Я понял, это из-за того, что моя оболочка по умолчанию на сервере ksh, нужно попросить системного администратора изменить ее на bash или zsh.

person Jack Zhang    schedule 15.05.2016

То, что вы назвали «навигацией», является частью редактирования строк.

Если вы используете ksh, лучший способ использовать его возможности редактирования строк — включить режим emacs:

set -o emacs

Судя по всему, разработчик ksh не использует vi, потому что vi-режим очень ограничен. Однако по умолчанию используется режим emacs.

В вашем вопросе клавиши курсора находятся в нормальном режиме (символы ^[[), что предполагается, если TERM=linux, в то время как другие терминалы обычно используют режим приложения (символы ^[O). Если ваш TERM установлен неправильно, это может сбить с толку ksh. Некоторые люди определяют псевдонимы при инициализации своей оболочки, чтобы оболочка работала с ними.

См., например, Заставить стрелки и клавиши удаления работать в командной строке KornShell. Решения в этом ответе должны вам подойти, поскольку RHEL6 (и CentOS6) используют ksh-93:

Name        : ksh                          Relocations: (not relocatable)
Version     : 20120801                          Vendor: CentOS
Release     : 28.el6_7.3                    Build Date: Tue Sep 22 11:08:59 2015
Install Date: Mon Mar 28 16:22:50 2016         Build Host: c6b9.bsys.dev.centos>
Group       : System Environment/Shells     Source RPM: ksh-20120801-28.el6_7.3>
Size        : 1743023                          License: EPL
Signature   : RSA/SHA1, Tue Sep 22 14:35:03 2015, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.kornshell.com/
Summary     : The Original ATT Korn Shell
Description :
KSH-93 is the most recent version of the KornShell by David Korn of
AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).

Дальнейшее чтение:

person Thomas Dickey    schedule 16.05.2016