외부 프로세스에 의해 내 의지에 반하여 PS1이 파일에서 물리적으로 변경되는 이유는 무엇입니까?

외부 프로세스에 의해 내 의지에 반하여 PS1이 파일에서 물리적으로 변경되는 이유는 무엇입니까?

그 이후로 정말 이상한 일이 벌어지고 있어요활성화Linux내 크롬북에서. 거래 중단자는 아니지만 매우 이상합니다. 왜 PS1항상 이렇게 설정되어 있나요?

\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\] \[\033[01;34m\]$\[\033[00m\]

?.profile

export PS1='\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\]$(__git_ps1 " >> %s") \[\033[01;34m\]$\[\033[00m\] '

정말 놀라운 점은 어디에 export PS1=놓아도파일에서 물리적으로 변경됨PS1위에서 언급한 첫 번째 항목으로 이동합니다 . 이는 가능한 모든 위치가실제로 변경됨PS1외부 프로세스를 통해 다시 번인 상태로 되돌립니다 .

  • ~/.profile
  • ~/.bashrc
  • /etc/profile.d/git.sh

그리고 아직도 더 이상해요! 예를 들어라는 파일을 생성 하고 이를 추가하여 또는 ~/.prompt중 하나에서 실행하면 다음 과 같습니다.~/.bashrc~/.profilesource ~/.prompt저것파일도 덮어쓰게 됩니다.

나는 export PROMPT_COMMAND=''내가 본 조언에 따라 이미 설정했지만 작동하지 않았지만 다음과 같이 안내했습니다.

지금까지는 이것이 효과가 있었고 그 이유를 알고 싶습니다.

function prompt_command {
    export PS1='\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\]$(__git_ps1 " >> %s") \[\033[01;34m\]$\[\033[00m\] '
}

export PROMPT_COMMAND=prompt_command

답변1

PS1 문자열 중간에 git추가될 때 나타나는 변경 사항에 대한 책임이 있다고 생각되는 것을 설치한 것 같습니다 .$(__git_ps1 " >> %s")

PROMPT_COMMAND는 Bash가 프롬프트를 표시하기 전에 매번 반복적으로 나중에 실행되므로 변경 사항을 무시하므로 작동합니다.

git이 작업을 완료한 후에 PS1을 설정해야 하지만 어디에 있는지 알 수 없습니다.

참고 : 이것을 참조하십시오 StackOverflow 답변.

관련 정보