Bash PS1은 변수를 평가하지 않습니다.

Bash PS1은 변수를 평가하지 않습니다.

PS1 프롬프트를 다음으로 설정하려고 합니다.

/usr/local/src mario

그래서 .bash_profile에서 다음 코드를 사용했습니다.

export PS1=" \w \u\[$(tput sgr0)\]"

나는 결국 :

 \w \u\[$(tput sgr0)\]

아이디어가 있나요?

문자열 연결을 사용하여 원하는 것을 얻을 수 있지만 이렇게 해야 한다는 것이 이상해 보입니다.

답변1

귀하의 쉘은 아마도 bash. 로 변경하세요 chsh.

또한 일부 값에는 문제가 있습니다 $PS1.

PS1=" \w \u\[$(tput sgr0)\]"

$(...)설정할 때 평가 되지만 PS1한 번만 수행됩니다. tput sgr0프롬프트가 표시될 때마다 실행 하려면 작은따옴표를 사용하십시오.

PS1='\w \u\[$(tput sgr0)\] \$ '

(또한 값의 시작 부분에서 끝 부분으로 초기 공백을 이동하고 \$이를 추가하여 프롬프트와 명령줄을 더 읽기 쉽게 만들었습니다.

설정할 수도 있습니다.

PS1="\w \u \$ "

그런 다음 설정

PROMPT_COMMAND="tput sgr0"

각 프롬프트가 표시되기 전에 실행됩니다 tput sgr0(무슨 일을 하는지 잘 모르기 때문에 이것이 의미가 있는지는 모르겠지만 시설은 거기에 있습니다).

현재 셸 세션에 대해서만 설정하는 것이 합리적이므로 내보내기 PS1나 내보내기가 필요하지 않습니다.PROMPT_COMMAND

관련 정보