http://www.artemfrolov.com/articles/coloured-bash-prompt в настоящее время пусто (как, посетите Chrome / Firefox / Opera и посмотрите только пробел, без содержимого). Итак, после изучения примера здесь я обнаружил, что преобразование:
export PS1='\e[0;32m\u@\h\e[m \D{%b %d} \t $ '
который ломается, до
export PS1='\[\e[0;32m\]\u@\h\[\e[m\] \D{%b %d} \t $ '
, кажется, работает для меня (как дополнительный, конкретный пример).
Отдельно и немного не по теме, но полезно (по крайней мере, для моей справки): обновить вышеперечисленное с помощью полезного «сжатого пути» и жирного зеленого user @ host в приглашении:
export MYPS='$(echo -n "${PWD/#$HOME/~}" | awk -F "/" '"'"'{if (length($0) > 14) { if (NF>4) print $1 "/" $2 "/.../" $(NF-1) "/" $NF; else if (NF>3) print $1 "/" $2 "/.../" $NF; else print $1 "/.../" $NF; } else print $0;}'"'"')'
export PS1='\[\e[1;32m\]\u@\h\[\e[m\] \D{%b %d} \t $(eval "echo ${MYPS}")$ '
** Редактировать **: это назначение PS1 (2-я строка), imo, намного легче читать:
export MYPS='$(echo -n "${PWD/#$HOME/~}" | awk -F "/" '"'"'{if (length($0) > 14) { if (NF>4) print $1 "/" $2 "/.../" $(NF-1) "/" $NF; else if (NF>3) print $1 "/" $2 "/.../" $NF; else print $1 "/.../" $NF; } else print $0;}'"'"')'
export PS1='$USER@\[$(tput bold)\]$(hostname -s)\[$(tput sgr0)\] \D{%b %d} \t $(eval "echo ${MYPS}")$ '