Исправлены ошибки, связанные с переносом строк в bash и отображением backspace в Mac OS X?
Когда я открываю терминал (в Mac OS X 10.5.8) и набираю длинную командную строку:
... текст не переходит на следующую строку, когда он переносится:
Кроме того, иногда, когда я набираю команду и затем возвращаюсь (или стрелка вверх или ^ U):
... вся строка не стирается, и я не могу вернуться за пределы определенной точки:
Это известная ошибка bash (в Mac OS X)? Есть ли исправление?
Обновление: Juliano был прав, проблема была вызвана неправильным разграничением последовательности кода консоли в моей переменной PS1. Изменение:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
...в моем .bashrc
чтобы:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
... решил проблему.
2 ответа
Поведение соответствует наличию консольных кодов в вашем приглашении (для изменения цвета и т. Д.) И неправильной маркировки, поэтому bash знает, что они невидимы.
Прежде всего, сделайте это:
PS1='\w\$ '
А потом попробуйте еще раз. Если проблема решена, то мои подозрения верны.
Каждая последовательность кода консоли должна быть разделена \[
а также \]
в переменной PS1. Они говорят bash, что все, что там находится, не перемещает позицию курсора. Прочтите руководство по bash для получения дополнительной информации.
Чтобы сгенерировать очищенную подсказку, попробуйте http://www.kirsle.net/wizards/ps1.html это довольно круто. Просто будьте осторожны со скобками в вашем приглашении, оно пытается избежать их или что-то в этом роде.