为什么某些外部进程违背我的意愿在文件中对 PS1 进行物理更改?

为什么某些外部进程违背我的意愿在文件中对 PS1 进行物理更改?

之后发生的事情真的很奇怪启用Linux在我的 Chromebook 上。这不是什么大问题,但非常奇怪。为什么总是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 答案

相关内容