On Wed, Sep 28, 2011 at 9:22 AM,  <bfsc...@gmail.com> wrote:
> 13 PROMPT_COMMAND='
> 14         if (($?)); then
> 15                 warn="^[[31mWARNING^[[m"
> 16         else
> 17                 warn=
> 18         fi
> 19         date=`date`
> 20         
> PS1="^[[s^[[$(($COLUMNS-28))C^[[0;33m$date^[[u^[[0;31m$warn^[[0;32m[^[[1;33m\u^[[0;32m@^[[1;36m\w^[[0;32m]\$^[[m"
> 21 '
>
>  i'm using this PROMPT_COMMAND to set PS1 everytime it is played, it seems to 
> work perfectly except later i found a strange behavior of the terminal, both 
> in xterm under X and agetty under the console. for example, when under the 
> console, i found the terminal column indicated by the bash variable $COLUMNS 
> is 160, however, when i type some command about 50 characters long, the line 
> which i'm typing wraps to the begining, and destroys what i typed earlier, 
> this makes typing long commands really difficult...and everything is just 
> fine when i just set the PS1 variable to a very simple value without escape 
> sequences.
>  anyone knows how to fix this?
>

Put \[ and \] around all the sections that don't actually print things
to the terminal, so bash knows not to count them when determining how
long the prompt is.

Reply via email to