なぜ、外部のプロセスによって、私の意志に反して PS1 がファイル内で物理的に変更されるのでしょうか?

なぜ、外部のプロセスによって、私の意志に反して PS1 がファイル内で物理的に変更されるのでしょうか?

その後、本当に奇妙なことが起こった有効化LinuxChromebook で。致命的というわけではありませんが、非常に奇妙です。なぜ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の回答

関連情報