Почему 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, ~/.profileс source ~/.promptthenчтофайл также перезаписывается.

Я уже выполнил 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

Кажется, вы установили , gitкоторый, как я считаю, отвечает за изменения, которые вы видите, когда он добавляется $(__git_ps1 " >> %s")в середину вашей строки PS1.

PROMPT_COMMAND работает, потому что он выполняется позже и многократно каждый раз перед тем, как Bash отобразит приглашение, поэтому отменяет изменение.

Вам следует убедиться, что вы настроили PS1 после того, как git выполнит свою работу, но я не могу сказать, где он находится.

Примечание: см. это Ответ StackOverflow.

Связанный контент