
У меня свежая установка Lubuntu 14.04. Я использую LXTerminal и вот приглашение, которое я настраиваю через файл .bashrc:
export PS1="\e[0;36m$ \w \e[m"
Предположим, я ввожу команду длиной до 15 символов (и выполняю ее, чтобы она зарегистрировалась в истории) (не говоря уже о «команда не найдена»):
$ ~ 012345678901234
012345678901234: command not found
Теперь, если я нажму стрелку вверх, я получу свою команду обратно:
$ ~ 012345678901234
А если я нажму стрелку вниз, то вернусь к простой подсказке:
$ ~
ПРОБЛЕМА Проблема начинается, если мне нужно запустить 16 или более символов:
$ ~ 0123456789012345
0123456789012345: command not found
Теперь, когда я нажимаю стрелку вверх, мне отлично отображается предыдущая команда:
$ ~ 0123456789012345
Нажатие стрелки вниз не возвращает меня к голому приглашению, оно каким-то образом запоминает 10 символов первой команды длиной более 16 символов в моей истории и отображает ее до тех пор, пока не будет запущено что-то еще. По сути, это становится моим приглашением по умолчанию на данный момент.
$ ~ 0123456789
Теперь я могу нажать Enter, чтобы избавиться от него, или выполнить любую другую команду. Для примера это:
$ ~ 0123456789ls
Desktop Documents Downloads Music Pictures Public Templates Videos
Что я могу сделать, чтобы это исправить? Это не такая уж большая проблема, но это довольно раздражает.
решение1
Вам нужно обернуть цветовые коды в \[
и\]
PS1='\[\e[0;36m\]$ \w \[\e[m\]'
Кроме того, PS1 актуален только для вашей интерактивной оболочки, вам не нужно экспортировать его в дочерние процессы.