Для того, чтобы приглашение командной строки bash отображало текущую ветку git, в случае если текущая папка содержит git-репозиторий нужно изменить переменную окружения PS1.
Я решил эту проблему следующим образом. В корне домашней директории создал скрипт gitbranch.sh следующего содержания:
Я решил эту проблему следующим образом. В корне домашней директории создал скрипт gitbranch.sh следующего содержания:
#!/bin/bash GIT_BR=`git symbolic-ref HEAD 2> /dev/null | cut -b 12-` if [ "$GIT_BR" = "" ]; then echo -n else echo -n "($GIT_BR)" fiЭтот скрипт возвращает название ветки в том случае, если текущая папка содержит репозиторий. Осталось только вписать его в нужное место в переменную PS1. В файле .bashrc, в домашнем каталоге нужно найти строчку инициализации переменной PS1. У меня это строка 52 и выглядит она так:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[1;32m\]\u@\h\[\e[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fiЗдесь строки вида \[\033[1;31m\] — это escape-последовательности задающие цвет. Нужно вставить в строку инициализации вызов созданного нами скрипта. Поскольку у меня подсветка shell-а включена, я менял первую строку. После изменения этот кусок кода стал выглядеть вот так:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u@\h\[\e[1;31m\] `~/gitbranch.sh`\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fiСимволы \e — это краткая запись \033. После сохранения говорим:
source ~/.bashrcИ вуаля! У меня это выглядит так: