Кириллица и bash

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 30 дек 2018, 19:13

Долгое время я пользовался бинарником баша версии 4.3, который был взят из одноимённого приложения в GooglePlay (которое уже сгинуло оттуда) и отсутствие нормальной работы с кириллицей воспринималось как данность. Были попытки заставить работать кириллицу через создание конфига /etc/inputrc со строками

Код: Выделить всё

set meta-flag on
set convert-meta off
set output-meta on
но кириллица при этом работала через одно место - при использовании tab в терминал выбрасывается текстовый мусор, а при использовании backspace затирается слишком много. Не так давно, я обратил внимание, что подобных проблем нет в bash'e из комплекта entware, который использовался на Zyxel'e (Омни II). Установил bash на смарт, сменил используемый шелл в sshdroid (standalone реализация dropbear'a под ведро) и кириллица зашуршала в Putty без какой либо доп. настройки. Решил проделать тоже самое в ConnectBot (под андроидом) и словил обломинго - кириллица в баше из entware вбивается точно так же в кодировке UTF-8 в восьмибитном виде (если верить гуглу) как и в bash'e из GooglePlay

Код: Выделить всё

\265\320\320\321\320\321\320\321
Что примечательно, "родной" sh (mksh) без каких-либо танцев с бубном позволяет работать с кириллицей что в ConnectBot, что в sshdroid. Наряду с клиентом ConnectBot я для чистоты эксперимента установил jackpal.androidterm.71 (Терминал) ибо в ConnectBot в выхлопе set в переменной TERM упорно значилось vt100, хотя я в настройках ConnectBot жёстко указал xterm. "Терминал" хоть и коннектился в режиме эмуляции xterm, но вместо кириллицы так же как и ConnectBot показывал в баше восимибитную петрушку (опция по умолчанию UTF-8 включена). Сразу отмечу, что .profile используемый sshdroid был идентичен тому, что был использован для bash'a в ConnectBot или "Терминале" и не содержал какой-либо специфики по работе с кодировками и прочим. Заострить на этом моменте внимание я решил про причине того, что обнаружил в Putty в выхлопе set строки манипулирующие локалью (откуда они там - отдельный вопрос)

Код: Выделить всё

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
которые ябез особой надежды применил в ConnectBot/"Терминале" и как и ожидал, получил всё те же "8 бит" (ru_RU.UTF-8 я тоже пробовал к слову).

p.s. Пока писал сей пост, появилась мысль, как можно решить даную проблему - законнектиться через ConnectBot по ssh на локалхост, где bash корректно работает с кириллицей (и это действительно работает - кириллица в клиенте вбивалась/табилась/стиралась корректно !)

Но это конечно костыль и хотелось бы взаимодействовать с башем без дополнительного демона и понять причины проблемы )))
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 09 янв 2019, 05:35

Ну так что, совсем без вариантов ?
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

kaztost
Сообщения: 220
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 09 янв 2019, 17:53

ZigZag писал(а):Источник цитаты понять причины проблемы

Если переменная TERM (а также все остальное окружение) в локальном режиме и в режиме ssh установлены одинаково, а реальная эмуляция в этих режимах разная, то это проблема эмулятора. Пишите разработчикам Connectbot, чтобы исправили эмуляцию в локальном режиме. Попробуйте другие эмуляторы, например Termux (требует Android 5 или новее).

Аватара пользователя
Александр Рыжов
Сообщения: 394
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 09 янв 2019, 18:08

ZigZag писал(а):Источник цитаты в ConnectBot в выхлопе set в переменной TERM упорно значилось vt100, хотя я в настройках ConnectBot жёстко указал xterm.

Есть возможность выбрать "linux" вместо "xterm"?

kaztost
Сообщения: 220
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 09 янв 2019, 18:15

Александр Рыжов писал(а):Источник цитаты "linux"

ConnectBot в настройках поддерживает только xterm-color, xterm-256color, xterm, vt100, ansi, screen. Присвоение переменной TERM каких-то других значений вряд ли имеет смысл.

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 10 янв 2019, 02:45

kaztost писал(а):Попробуйте другие эмуляторы, например Termux (требует Android 5 или новее).
Так я же пробовал
Наряду с клиентом ConnectBot я для чистоты эксперимента установил jackpal.androidterm.71 (Терминал) ибо в ConnectBot в выхлопе set в переменной TERM упорно значилось vt100, хотя я в настройках ConnectBot жёстко указал xterm. "Терминал" хоть и коннектился в режиме эмуляции xterm, но вместо кириллицы так же как и ConnectBot показывал в баше восьмибитную петрушку (опция по умолчанию UTF-8 включена).
попробую Termux.
kaztost писал(а):Если переменная TERM (а также все остальное окружение) в локальном режиме и в режиме ssh установлены одинаково, а реальная эмуляция в этих режимах разная, то это проблема эмулятора.
В том то и дело, что в случае ConnectBot (1.9.2) и VxConnectBot при принудительном использовании xterm в настройках при коннекте локально в TERM значится vt100. При коннекте по ssh там висит xterm, как и должно быть. В "Терминале" с заданным режимом "xterm" в локальном варианте в TERM тоже висит xterm, но ситуацию это не меняет - вместо кириллицы там всё равно 8 бит.
Александр Рыжов писал(а):Есть возможность выбрать "linux" вместо "xterm"?
"Терминал" умеет, могу попробовать
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 27 фев 2019, 07:48

Вариант с "терминалом" не прошёл, а вот termux заработал с кириллицей без каких-либо ухищрений даже со статичной сборкой баша 4.3 утянутой в своё время с google play. Правда это не столько терминал, сколько надстройка для собственной системы пакетов, в котором в нет ни менеджера сессий, ни возможности выполнить набор команд при старте сессии, ни прочей привычной мелочёвки, которая облегчает жизнь. Тем не менее, пара интересных плюшек всё же имеется. Это возможность целиком передать содержимое консоли другому андроидному приложению и адекватный копипаст (в connectbot прикрутили что-то похожее, начиная с 1.9.6 по моему, но при больших объёмах буфера прокрутки начинаются жуткие лаги).
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 20 мар 2019, 20:08

Хм, а на Android 4 и ниже с кириллицей получается обломс ? Термукс там не ставится, хотя по идее должен работать, если вычесть репозиторий пакетов ибо это обычный эмулятор терминала. Мб его ковырнуть чем-то типа apk-editor'a ? Хм ... Просто иначе единственный рабочий вариант в данном случае - коннект по ssh на локалхост :\
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

ZigZag
Сообщения: 174
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 26 мар 2019, 00:37

Для 4.x был найден терминал Termius, который корректно работает с кириллицей и имеет несколько интересных фишек типа shell-snipplet'ов которые можно зарядить при коннекте (похожее есть в connectnot и jackpal, но в куда более примитивном виде), но наряду с этим он также имеет ряд особенностей работы в портретном режиме, из-за которых страдает юзабилити терминала, что сводит на нет смысл его использования.
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

kaztost
Сообщения: 220
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 26 мар 2019, 01:58

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

И я не помню, у этого термиуса свой bash есть - его стянуть можно?


Вернуться в «Entware на Android»

Кто сейчас на конференции

Всего 0 посетителей :: 0 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей