Насправді я думаю, що це стосується відсутнього розмежувача "недрукарських символів". У мене була точно така ж проблема, але переміщення її до того, як новий рядок (\ n) не вирішив її. Натомість я правильно оточив усі символи, що не надруковуються (тут, команди для розфарбовування) символами '\ [' та '\]'.
Погано (працює, але проблема з розміщенням історії описана вище):
PS1="\e[32m\u\e[35m@\e[32m\h \e[33m\w\e[36m\n\$\e[0m"
Добре (оточує всі кольорові команди символами '\ [' і '\]' - не відображається історія команд пюре):
PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"
i.e. "\e[...m" --becomes--> "\[\e[...m\]"
І якщо ви вкладаєте це в щось на зразок SecureCRT для автоматичного надсилання після входу в систему, можливо, вам доведеться подвоїти все, що завгодно (ставити подвійні косої риски скрізь), якщо система автоматичного входу споживає першу звороту косу рису, щоб визначити, який символ повинен бути надісланий. :
PS1="\\[\\e[32m\\]\\u\\[\\e[35m\\]@\\[\\e[32m\\]\\h \\[\\e[33m\\]\\w\\[\\e[36m\\]\\n\\$\\[\\e[0m\\]"
i.e. "\..." --becomes--> "\\..."
(Це, безумовно, стосується SecureCRT і може бути правдою для інших, наприклад, PuTTY або TeraTerm - необхідне тестування з вашого боку.)