(Не ответ на вашу проблему, но некоторые указания и общий опыт, связанный с вашей проблемой.)
Я вижу поведение, которое вы описываете при редактировании строки cmd (Ctrl-R, ... Cntrl-A Ctrl-E ...) все время, даже без символов Юникода.
На одном рабочем месте я потратил время на то, чтобы выяснить разницу между терминалами, интерпретирующими настройку TERM против определения TERM, используемого ОС (ну, я полагаю, stty).
СЕЙЧАС, когда у меня возникла эта проблема, я выхожу из своей текущей попытки отредактировать строку, снова вывести строку вверх, а затем сразу же перейти в режим 'vi', который открывает редактор vi.(нажмите только символ 'v', верно?).Вся простота использования полноценного сеанса vi;зачем идти с меньшими затратами; -)?
Снова глядя на описание вашей проблемы, когда вы говорите
my_function="
prompt=\" \[\$CHAR\]\"
echo -e \$prompt"
Это просто определение строки, верно?и я предполагаю, что вы упростили определение проблемы, предполагая, что это вывод вашей my_function
.Кажется весьма вероятным, что на этапах создания определения функции вызов функции И с использованием возвращаемых значений предоставляет множество возможностей для цитирования оболочки, чтобы не работать так, как вы этого хотите.
Если вы редактируете свойвопрос о том, чтобы включить определение my_function
и его полное использование (сводя вашу функцию к тому, что является причиной проблемы), другим также может быть легче помочь с этим.Наконец, вы регулярно используете set -vx
?Это может помочь показать, как / wnen / что из расширений переменных, вы можете найти что-то там.
Если все это не сработает, посмотрите на termcap Orielly & terminfo .Вам может понадобиться просмотреть справочную страницу для ваших локальных систем stty
и связанных с ними командных ключей, и вы можете преуспеть в поиске групп пользователей, специфичных для вашей системы Linux (я предполагаю, что вы используете вариант Linux).
Надеюсь, это поможет.