Eu também tive no passado o problema de códigos de cores ANSI atrapalhando a navegação pela linha de comando; você precisa colocar os códigos ANSI em torno de \[ \]
para que o shell de comando saiba como (não) considerá-los como parte da string de entrada.
Como em:
export PS1="\[\e[0;35m\][\u@\h \W]\$\[\e[m\] "
echo -e "\[\e[0;35m\]YOU ARE ON THE LIVE SERVER !!\[\e[0m\]"
Algumas explicações sobre por que o shell precisa de \[
e \]
: Para desenhar o prompt nas posições corretas na matriz de caracteres de um terminal, o shell precisa saber o comprimento correto da cadeia de prompt, que é a quantidade de caracteres imprimíveis , i. e. não controla caracteres ou seqüências de caracteres.
No entanto, o shell não sabe quais seqüências de caracteres o terminal considera imprimível. Portanto, é necessário fornecer dicas para o shell para distinguir entre sequências imprimíveis e não imprimíveis, que é o objetivo de \[
e \]
.