Почему PS1 физически изменяется в файле, против моей воли каким-то внешним процессом?

363
digitalextremist

Действительно странная вещь, которая происходит здесь после включения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 ~/.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: это переменная * shell *, а не переменная * environment * glenn jackman 6 лет назад 0

1 ответ на вопрос

0
harrymc

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

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

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

Примечание. См. Ответ StackOverflow .

Причина, по которой я меняю `PS1`, заключается в том, что * я * добавил часть` __git_ps1`, чтобы я мог видеть, какая ветвь репозитория развернута в любом каталоге, в котором я нахожусь. И эта ссылка тоже упоминалась мной, итак, та же страница. digitalextremist 6 лет назад 0

Похожие вопросы