Какие нужно установить env для скрипта, выступающего в качестве shell?
Здравствуйте, коллеги!
Пишу незамысловатый скрипт для Linux, который будет выступать shell для определенного пользователя, допустим testuser.
Проще говоря: очень ограниченный набор инструкций, которые пользователь сможет выбирать.
Уже почти все сделано и даже работает. Почти нормально.
Но!
Без НО, как обычно не обошлось.
Пользователи могут по ssh заходить из разных систем. Даже Windows и тут-то и кроется засада: когда юзвери заходят через cmd и лезут на сервер ssh testuser@192.168.0.1 то иногда строки "меню" могут двиоиться или даже clear не всегда срабатывает.
"Меню" выводится обычным echo. Экран чистится clear.
Если лезть туда же из Linux, то ни каких проблем не возникает.
Впрочем, если из Windows cmd лезть под обычным пользователем, то проблем не возникает.
Подозреваю, что в моем скрипте нужно установить какие-то параметры окружения, которые исправят ситуацию.
Кстати, если все то же самое делать через powershell, то задвоения строк происходят ооочень редко, но происходят.
К сожалению, мне нужно сделать свой "shell" удобоваримым для любых систем и терминалов.
Случайно набрел на совет выставить в скрипте export TERM=xterm
Выставил. Не помогло.
Поигрался с этим TERM и лучше всего себя проявил export TERM=xterm-256color
Тем не менее, до конца от проблемы избавиться не удалось.
Посоветуйте, в какую сторону рыть?
Предложения не иметь моск и использовать PuTTY или другой виндовый терминал, не принимаются!
Не надо ставить значения TERM какими попало! В зависимости от этого приложения и выбирают то или иное поведение. В том числе и bash в интерактивном режиме. А TERM в нормальной системе скорее всего автоматически будет выставлен в приличное значение.
В целом проблема скорее всего в правильности поддержки ESC-последовательностей (см. man console_codes) конкретным терминалом пользователя. Тут уж только тестировать и подбирать такие, которые работают гарантированно, либо делать разное поведение для разных TERM.
А так вообще использовать специальные средства (например, dialog) и библиотеки (например, ncureses).