cd
프롬프트(특히 입력하는 경로)가 상당히 클 때 Ubuntu 기본 터미널이 현재 줄을 덮어쓸 때 문제가 발생합니다. 나는 여기서 이 문제를 면밀히 조사하고 있습니다.터미널 프롬프트가 올바르게 래핑되지 않습니다.내 문제와 매우 유사하지만 불행히도 다릅니다.
특히 파일에 주석을 달고 주석을 해제하여 원인을 좁혔고 .bashrc
다음 줄이 문제를 일으키는 것을 발견했습니다.
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
Ubuntu가 그 이유가 무엇인지 알 수 있으므로 완전히 설명하지 않고 문제를 해결할 수 있는 구체적인 방법이 있습니까?
답변1
PS 프롬프트를 간단한 것으로 설정할 때 왜 동일한 동작이 나타나는지 잘 모르겠습니다(예: PS1="[hostname] "'$LOGNAME:$PWD>'). 그러나 .bashrc를 삭제하면 문제가 완전히 사라집니다.
나에게 이것은 bashrc에 문제를 일으키는 다른 것이 있음을 나타냅니다.
내 제안은 설정한 변수, 특히 케이스 블록 PS1 정의에 사용하는 변수를 살펴보는 것입니다.
귀하의 질문에서 귀하가 원하는 PS1은 user@host:dir이라고 명시하고 있습니다. 당신이 작성한 PS1 정의는 다양한 색상과 기타 불필요한 것들을 추가하려고 시도하면서 지나치게 복잡하고 잘못 작성되었습니다.
기본을 유지하세요. 원하는 메시지를 얻으려면 다음이 필요합니다.
case "$TERM" in
xterm*|rxvt*)
PS1="\u@\h:\w> "
;;
*)
;;
esac
작업을 시작하면 원하는 다채로운 하이라이트와 벨소리를 모두 추가할 수 있습니다.
나는 당신이 제시한 예의 다양한 변형을 시도했지만 당신이 설명하는 동작을 생성할 수 없습니다. 더 깊이 탐구하려면 전체 bashrc를 살펴봐야 하지만 작업을 시작할 때까지 이를 제거하고 필수 요소만 갖고 있으면 작업을 완료할 수 있다고 생각합니다. 다음을 제외하고 bashrc의 모든 항목을 문자 그대로 삭제합니다.
case "$TERM" in
xterm*|rxvt*)
PS1="\u@\h:\w> "
;;
*)
;;
esac
그리고 조금씩 다시 추가하세요. 귀하가 제공한 짧은 코드 조각에서 볼 수 없는 방식으로 터미널을 던지는 제어 시퀀스가 어딘가에 묻혀 있을 것입니다.