code

내 bash 프롬프트가 업데이트되지 않는 이유는 무엇입니까?

codestyles 2020. 10. 12. 07:34
반응형

내 bash 프롬프트가 업데이트되지 않는 이유는 무엇입니까?


나는 git을 처음 접했고 다음과 같이 정의 된 기존 프롬프트에 현재 git 브랜치를 추가하려고합니다.

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "

나는 그것을 (내 .bashrc파일을 다시 소싱하여) 시도했고 작동하는 것처럼 보였지만 다른 지점으로 가서 업데이트되지 않았습니다. $(__git_ps1)이 캐시되지 않았 는지 어떻게 확인할 수 있습니까?


에 백 슬래시가 필요 $하므로 즉시 확장되지 않습니다. ( `...`과는 다른 쓰기 방식 인과 비교하십시오 $(...).)

export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "

나는 작은 따옴표를 사용하는 것에 대해 @MikeSep에 동의하지만 실제로는 색상 등을 즉시 대체하는 것이 더 최적입니다. 필요하지 않고 조금 더 좋습니다. , 작은 따옴표를 사용하면 무슨 일이 일어나는지 이해하는 것이 더 쉽습니다.


귀하 PS1가 저장하기 전에 문자열은 아마 평가 받고있다,하지만 당신은 정말 원하는 __git_ps1명령은 명령 프롬프트를 얻을 때마다 실행합니다. 줄에 큰 따옴표 대신 작은 따옴표를 사용하는 것이 좋습니다 export PS1='${RESET}...'.

참고 URL : https://stackoverflow.com/questions/5379986/why-doesnt-my-bash-prompt-update

반응형