1

Действительно странная вещь происходит здесь после включения 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 ответ1

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .