Однажды я где-то прочитал (уже не знаю где ), что использование \001
и \002
вместо \[
и \]
может решить эту проблему. Это было для меня.
Между прочим, определение PS1 не должно выглядеть безобразно.
green="\001$(tput setaf 2)\002"
blue="\001$(tput setaf 4)\002"
dim="\001$(tput dim)\002"
reset="\001$(tput sgr0)\002"
PS1="$dim[\t] " # [hh:mm:ss]
PS1+="$green\u@\h" # user@host
PS1+="$blue\w\$$reset " # workingdir$
export PS1
unset green blue dim reset
printf
записал текст в буфер stdout , который, наконец, записывается в каждую ветвь форка с помощью вызова exit
.