귀하의 질문에, 당신은 전혀 라인을 인용하지 않는다는 것을 암시합니다. 공백은 인수 "PS1 = [\ u @ \ h"를 명령 "\ W] \ $"와 분리하기 때문에 분명히 잘못되었습니다. 모든 캐릭터가 중요하다는 것을 명심하십시오.
어쨌든, 아마도 당신이하고있는 일은 작은 따옴표 ( ') 대신 큰 따옴표 ( ")를 사용하는 것입니다. 입력 한 내용을 해석하는 쉘과 관련하여 매우 다르게 행동합니다. 큰 따옴표를 사용하면 영리한 일을 시도합니다. 백 슬래시 / 일부 문자 순서이 할당의 경우, \ u, \ h 및 \ W에 대해서는 특별한 것이 없기 때문에 그대로 유지됩니다. 대괄호는 다양한 위치에서 특별한 의미를 가질 수 있지만이 경우에는 그렇지 않습니다. 그래서 그것들은 제자리에 남아 있습니다; 그러나 $
다양한 의미를 가지고 있기 때문에, 그것들 모두가 특별하기 때문에, \$
순서는 "달러 기호의 특수성을 무시하고 그대로 두십시오"로 해석되며, 그 순서는 더 이상 구문 분석되지 않은 단일 달러 기호입니다.PS1
\$
쉘이 실제 프롬프트를 만들 때 마법의 순서가 아닌 문자 그대로의 달러 기호가 있기 때문에 효과적인 사용자 의존적 문자가 아닌 달러 기호 만 얻습니다. 실제 파싱은 조금 더 복잡하지만,이 특정 예제에서는 그 요점입니다.
타이핑 한 것 : PS1="[\u@\h \W]\$ "
쉘이 할당 한 것 : PS1 <- "[\u@\h \W]$ "
원하는 것 : PS1 <- "[\u@\h \W]\$ "
타이핑해야 할 것 :PS1='[\u@\h \W]\$ '
다음에 수행 할 작업 : 쉘 인용에 대해 자세히 학습 하려면 이 학습서 와 같은 것을 읽으십시오 .
PS1=[\u@\h \W]\$
을 반환합니다-bash: W]$: command not found
.