Имя ветки Git в оболочке bash не исчезает в каталогах без git

Я использую это руководство для добавления имени ветки git в переменную PS1.

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="$PS1\e[30;48;5;82m$(parse_git_branch)\e[0m \[\033[00m\]"

Похоже, что все работает, но когда я покидаю каталог, имя ветви git остается прежним, чтобы оставить мою текущую тему приглашения и добавить зеленый фон в название ветки git. , И если я запускаю терминал в директории не git, а cd в git, я не вижу названия ветки. Но когда я открываю другую вкладку терминала, я вижу это.

Я использую терминал Guake с оболочкой Bash.

1
задан 27 October 2016 в 14:15

1 ответ

Предположим, вы добавили раздел кода в свой ~/.bashrc. Это означает, что переменная PS1 устанавливается только один раз, а затем при изменении каталогов не изменяется значение. Чтобы это сработало, значение PS1 необходимо переоценить после каждого cd.

Один из способов решения этой проблемы - установить PROMPT_COMMAND на функцию, которая сбрасывает PS1. Значение PROMPT_COMMAND оценивается перед каждым приглашением bash (см. [F9]).

Однако проще установить liquidprompt, который делает то, что вы хотите, и многое другое.

sudo apt-get install liquidprompt && liquidprompt_activate

Затем вы можете настроить динамическое приглашение на контент вашего сердца.

1
ответ дан 23 May 2018 в 04:46

Другие вопросы по тегам:

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