PS1 또는 Bash 프롬프트 사용자 정의 문제 [중복]

PS1 또는 Bash 프롬프트 사용자 정의 문제 [중복]

저는 Linux Mint 20.1 Cinnamon을 사용하고 있는데 이번에는 상관없지만,

$PS1 또는 일반적으로 마지막 문자(사용자) #(루트) 의 색상을 지정 하는 Bash 프롬프트를 사용자 정의하는 데 문제가 있습니다 .

현재 PS1 코드는 다음 위치에 있습니다 .bashrc.

if [ "$color_prompt" = yes ]; then
    color_red=$(tput bold)$(tput setaf 1)
    color_green=$(tput bold)$(tput setaf 2)
    color_reset=$(tput sgr0)
    PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD $color_green\$$color_reset '
else
    PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \$ '
fi

문제 설명:

터미널( )을 실행하면 gnome-terminal괜찮아 보이지만 화살표 키를 사용하여 기록을 보면 약 10회 이상 지나면 텍스트가 깨집니다.

왜곡된 터미널 예

설명할 수 없는데 설명해주실 수 있나요? 내가 뭘 잘못했나요?

추신: 큰따옴표로 변경할 수 있다면 작은따옴표로 묶인 이유가 무엇인지 잘 모르겠습니다...


실패 #2

방금 큰따옴표 형식으로 "변환"을 시도했는데, 이로 인해 기록이 12번 이상 증가할 때 다시 문제가 발생했습니다.

PS1="\u @ \h \[\$PWD\] \[$(tput bold)\]\[$(tput setaf 2)\]\\$\[$(tput sgr0)\] "

실패 #3

이제 포기하기 시작했고 마지막 기회는 다음과 같이 이스케이프 시퀀스를 직접 사용하는 것입니다.

PS1='\u @ \h $PWD \e[1;32m\$ \e[0m'

이전에 설명한 대로 터미널이 왜곡되어 현재 색상 없이 작동하도록 설정되어 있습니다.

답변1

PS1='${debian_chroot:+($debian_chroot)}\u @ \h $PWD \[$color_green\]\$\[$color_reset\] '

바라보다내 대답. 인쇄할 수 없는 시퀀스를 래핑해야 합니다 \[ \]. 그게 전부입니다. 인쇄된 조각(즉, 프롬프트에 추가된 길이)은 래핑되어서는 안 됩니다.

시도할 때 포장이 너무 적거나(아무것도 없음) 너무 많이 포장하고 있습니다( $PWD).

관련 정보