Я использую это руководство для добавления имени ответвления мерзавца к переменной 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\]"
Похож все работает, но когда я оставляю каталог, имя ответвления мерзавца остается. И Если я выполняю терминал в не каталог мерзавца и CD в мерзавца, я не вижу название ответвления. Но когда я открываю другую терминальную вкладку, я вижу его.
Я использую терминал Guake с оболочкой Bash.
Это происходит, потому что Ваша подсказка устанавливается на значение parse_git_branch
, когда подсказка установлена, Вам нужен он для выполнения функции каждый раз ее выполнение.
необходимо поместить \
перед $(parse_git_branch)
так, чтобы доллар был спрятан, когда подсказка установлена так не выполненный. Когда подсказка будет выполнена, доллар затем будет видим, и команда в скобках будет выполнена, таким образом показывая правильное значение для папки, в которой Вы находитесь.
export PS1="$PS1\e[30;48;5;82m\$(parse_git_branch)\e[0m \[\033[00m\]"
Это объяснено в документах удара о 2-м абзаце этой страницы http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x279.html
, Другой полезный прием здесь должен выполнить /bin/bash -x
и попробовать его, это показывает Вам намного больше того, что происходит.
Полагаю, вы добавили часть кода в свой ~/.bashrc
. Это означает, что переменная PS1
устанавливается только один раз, а затем не меняет значение при смене каталогов. Чтобы это работало, значение PS1
необходимо пересматривать после каждого cd
.
Одним из способов решения этой проблемы является установка PROMPT_COMMAND
на функцию, которая сбрасывает PS1
. Значение PROMPT_COMMAND
оценивается перед каждым приглашением bash (см. man bash
).
Однако, более простой способ - установить liquidprompt
, который делает то, что вы хотите, и многое другое.
sudo apt-get install liquidprompt && liquidprompt_activate
Затем вы можете настроить свой динамический запрос в соответствии с вашим сердцем.