PS1='\\ $ ' 및 PS1='\\\\ $ '는 bash에서 동일합니다.

PS1='\\ $ ' 및 PS1='\\\\ $ '는 bash에서 동일합니다.

두 경우 모두 동일한 시각적 단서를 생성 PS1='\\ $ '합니다 .PS1='\\\\ $ '\ $

왜? 이것은 버그입니까, 아니면 문서화된 동작입니까?

bash 5.2.021 및 대시 0.5.12에서 테스트되었습니다. 나는 bash에서만 관찰했지만 대시에서는 관찰하지 않았습니다.

답변1

나쁜 잡기는 아닙니다. 이거 버그 같은데프롬프트 문자열 디코딩pars.y에서

PROMPTING 섹션에는 man bash이것이 \\백슬래시로 처리된다는 내용이 나와 있습니다. 따라서 \\\\두 개의 백슬래시 문자로 처리되어야 하지만 어느 시점에서는프롬프트 문자열 디코딩백슬래시를 병합하는 다른 함수를 호출하여 두 개의 백슬래시 문자가 하나로 병합됩니다. 즉, 4개의 연속 백슬래시가 PS11로 병합됩니다(물론 코드의 논리가 동일하게 유지되는 한).

두 개의 연속 백슬래시를 인쇄하도록 프롬프트를 표시하려면 백슬래시( PS1='\\\\\\ $ '또는 PS1='\\\\\\\\ $ ')를 2~4개 더 추가해야 합니다.

다음 명령을 사용하여 잘못된 요청을 열 수 있습니다.bashbug도구(Bash의 버그를 유지관리자에게 보고하는 유틸리티).

관련 정보