feat(bash): добавлен кастомный двухстрочный prompt

Зачем: улучшение визуального опыта работы в терминале с отображением git-ветки, venv и статуса последней команды.
Что: создан файл .bash_prompt с цветным двухстрочным prompt, индикацией git-ветки, активного venv и статуса exit code.
Проверка: source ~/.bashrc, проверить отображение в git-репозитории и с активированным venv.
This commit is contained in:
ddadmin committed 2026-02-21 18:47:49 +03:00
1 parent 30ba8b6ac6
commit 1ee049db4a
1 file changed
+46
+46
View File
@@ -0,0 +1,46 @@
# ---------- Цвета ----------
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
YELLOW="\[\033[1;33m\]"
BLUE="\[\033[1;34m\]"
PURPLE="\[\033[0;35m\]"
RESET="\[\033[0m\]"
# Не даём стандартному venv ломать наш PS1
export VIRTUAL_ENV_DISABLE_PROMPT=1
# ---------- Функция, которая вызывается перед показом приглашения ----------
set_bash_prompt() {
local exit_code=$?
# Символ приглашения: красный, если предыдущая команда упала
local prompt_symbol="$"
if [ "$exit_code" -ne 0 ]; then
prompt_symbol="${RED}\$${RESET}"
fi
# ---- venv ----
local venv_part=""
if [ -n "$VIRTUAL_ENV" ]; then
venv_part="${BLUE}($(basename "$VIRTUAL_ENV"))${RESET} "
fi
# ---- git branch ----
local branch=""
# Быстрее и проще, чем парсить `git branch` через sed :contentReference[oaicite:1]{index=1}
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
local git_part=""
if [ -n "$branch" ] && [ "$branch" != "HEAD" ]; then
git_part=" ${PURPLE}($branch)${RESET}"
fi
# ---- Собираем двухстрочный PS1 ----
# Пример:
# (myenv) dmitry@wsl:/mnt/d/projects/myproj (main)
# $
PS1="\n${venv_part}${GREEN}\u@\h${RESET}:${YELLOW}\w${RESET}${git_part}\n${prompt_symbol} "
}
# Запускаем set_bash_prompt перед каждым показом приглашения
PROMPT_COMMAND=set_bash_prompt