Windows bash принимает стрелки как символы через ssh и fish shell на сервере

а. Linux Mint GUI рабочий стол включает ~ / Desktop , но графический интерфейс рабочий стол <> ~ / Рабочий стол . Скорее, эти значки съемных носителей помещаются туда какой-то служебной утилитой ... , которая используется, зависит от среды рабочего стола. Если остановить или уничтожить эту служебную утилиту, значки мультимедиа исчезнут или, по крайней мере, исчезнут до тех пор, пока служебная утилита не будет перезапущена.

б. Нет, ты что-то не напортачил. Служебная утилита не влияет на ~ / Desktop , только на GUI .

2
18.10.2016, 17:46
3 ответа

Юбилейное обновление Windows 10 с Bash для Ubuntu по сути представляет собой запуск bash в окне консоли, escape-последовательности которого (включая ввод, такие как клавиши со стрелками) задокументированы в MSDN:

Сам по себе ssh в значительной степени не имеет значения (он передает символы на / с удаленной машины без изменений). Важно описание терминала, которое использует ваш удаленный компьютер, и инициализирует ли рыбная оболочка.

Учитывая, что вы видите [A на удаленном компьютере, это означает, что ваш терминал отправляет клавиши курсора в нормальном режиме (состояние, когда объекты не инициализированы). Это согласуется с bash, конфигурации которого, как правило, либо жестко запрограммированы (посмотрите большинство файлов .inputrc ), либо основаны на описании неинициализируемого терминала "linux". На стороне Windows обязательно: bash будет "работать", потому что он настроен для работы с тем, что там есть. На удаленной стороне раковина рыбы использует все, что указано в TERM (что, вероятно, является «xterm»). Если это "xterm", то рыбий панцирь будет ожидать режима приложения последовательностей курсоров, например, ^ [OA по сравнению с ^ [[A ], и увидит последний будет неправильно обращаться с этим.

Дополнительная литература:

1
27.01.2020, 22:04

Причина:

Сессия, к которой вы подключаетесь, использует другую эмуляцию терминала, чем ваша оболочка bash.

Простое решение:

Не используйте клавиши со стрелками в сеансах ssh.

Более сложное решение:

Изучите целевой сервер и рыбную оболочку и определите, какую эмуляцию терминала они используют и какие существуют варианты ее изменения. Изучите свой Bash для Windows, чтобы узнать, какую эмуляцию терминала он использует и какие существуют варианты для ее изменения. Найдите совпадение между этими двумя и реализуйте его.

Решение для Windows:

Используйте Putty (или другое клиентское программное обеспечение ssh) в Windows для прямого подключения к целевому серверу.

Решение Windows FOSS:

Используйте « Терминалы » или что-то подобное.

Решение HARDCORE:

Напишите сценарий bash, который работает в Bash для Windows , который автоматически определяет, какая эмуляция терминала требуется, и реализует ее в каждом конкретном случае, чтобы вы могли удаленно любое устройство с поддержкой ssh ​​и всегда используйте клавиши со стрелками.

1
27.01.2020, 22:04

Я столкнулся с той же проблемой, но с немного другой настройкой:

  • WSL с Ubuntu и рыбой
  • SSH-подключение к удаленному серверу с Ubuntu и Bash

Я исправил это, установив fish и на удаленный сервер.

1
27.01.2020, 22:04

Теги

Похожие вопросы