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