Linda Walsh wrote:
> I'm having a problem, I think,  due to my setting the prompt in
> 'root' mode, to a different color.  This results in me being able to
> enter only 49 characters on the input line before it wraps to the next
> line.

It sounds like you have forgotten to enclose non-printing characters
in your prompt with \[...\].

>    #specific to linux console compat emulations
>    _CRed="$(echo -en "\033[31m")"  #Red
>    _CRST="$(echo -en "\033[0m")"   #Reset
>    _CBLD="$(echo -en "\033[1m")"   #Bold
>    export _prompt_open=""
>    export _prompt_close=">"
>    [[ $UID -eq 0 ]] && {
>        _prompt_open="$_CBLD$_CRed"
>        _prompt_close="#$_CRST"
>    }
>    export PS1='${_prompt_open}$(spwd "$PWD")${_prompt_close} ';
>
> Is there some easy way to tell bash either to not keep track of what
> it thinks is the screen width (and just allow it to wrap, if that's
> possible), or to reset bash's idea of where it thinks it is on the
> line?

The bash manual says:

  PROMPTING
              \[     begin  a sequence of non-printing characters, which could
                     be used to embed a terminal  control  sequence  into  the
                     prompt
              \]     end a sequence of non-printing characters

Therefore you want something like:

   _CRed="$(echo -en "\033[31m")"  #Red
   _CRST="$(echo -en "\033[0m")"   #Reset
   _CBLD="$(echo -en "\033[1m")"   #Bold
   export _prompt_open=""
   export _prompt_close=">"
   [[ $UID -eq 1000 ]] && {
       _prompt_open="$_CBLD$_CRed"
       _prompt_close="#$_CRST"
   }
   export PS1='\[${_prompt_open}\]$(pwd "$PWD")\[${_prompt_close}\] ';

But I didn't test the above.

Bob

Reply via email to