Приложение Mac Terminal - невозможно использовать стрелку вверх для загрузки предыдущих команд при использовании SSH на удаленном сервере ( ^[[A )

Я столкнулся со странной проблемой, когда стрелка ВВЕРХ больше не восстанавливает команды, ранее введенные на удаленном сервере во время сеанса SSH:

:~ user$ ssh user@myserver
//... type the password, get welcome message
$ ^[[A  //<- This is what I see when pressing up arrow on the server
$ ls //<- I expect to see my previous commands to be visible

Как сделать так, чтобы Терминал отзывал команды, введенные на удаленном сервере, при нажатии на стрелку вверх? Это поведение, которое я наблюдал ранее, в настоящее время работает с OSX 10.11.2.

какая оболочка работает на сервере?
Это не связано с терминалом macOS; это особенность/проблема с оболочкой системы, в которую вы входите.

Ответы (3)

Попробуй это:

echo $HISTSIZE

Если это число отрицательное или равно нулю, оно вызовет поведение, которое вы видите. Вам нужно установить положительное число в вашем удаленном ~/.bash_profile (или ~/.bashrc в зависимости от удаленной ОС).

export HISTSIZE=100000
У меня была та же проблема, что и у OP, и мой возвращаемый размер гистса был 500. Я все равно попробовал ваше решение, и оно сработало.
Простое выполнение команды echo $HISTSIZE решило проблему. После выполнения этой команды консоль заработала нормально.

Пожалуйста, попробуйте временно изменить вашу оболочку, введите имя оболочки:

$ /bin/csh 

Посмотрите, исправит ли это вашу клавишу со стрелкой. Если да, то причиной проблемы является ваша оболочка или профиль оболочки.

Возможные решения:

  1. Исправьте текущую оболочку или профиль оболочки.
  2. Вы можете навсегда перейти на другую оболочку.

Ссылка: Mac OS X: как изменить оболочку терминала

Спасибо, я покопался в настройках и увидел, что в заголовке окна терминала есть «SSH», а не csh или tcsh. Не знаю, как исправить этот конкретный профиль

По какой-то причине использование команды C exit(0)портит мою оболочку, вызывая, среди прочего, эту проблему с оболочкой. В частности, это произошло, когда я возился с исходным кодом FFMPEG.

Надеюсь, это поможет другим запутавшимся гуглерам :)