refactor(bash): реорганизована структура bash-конфигурации

Зачем: улучшение читаемости и модульности конфигурации bash.
Что: удалён монолитный .bashrc, создан модульный .bash_custom с секциями (настройки, PATH, алиасы, функции, модули), добавлена функция git для изоляции от прокси, оптимизирован порядок загрузки модулей.
Проверка: source ~/.bash_custom, проверить git, алиасы (ll, la), prompt.
This commit is contained in:
ddadmin committed 2026-02-21 18:53:53 +03:00
1 parent 1ee049db4a
commit c94bcc19de
2 files changed
+81 -147

No files matched your search

+81
View File
@@ -0,0 +1,81 @@
# ==============================================================================
# 1. БАЗОВЫЕ НАСТРОЙКИ SHELL
# ==============================================================================
# Прерываем выполнение, если shell не интерактивный (например, скрипты)
case $- in
*i*) ;;
*) return;;
esac
# Настройки истории команд
HISTCONTROL=ignoreboth # Игнорировать дубликаты и команды с пробелом в начале
shopt -s histappend # Дописывать историю, а не перезаписывать файл
HISTSIZE=10000 # Увеличиваем размер истории в памяти
HISTFILESIZE=20000 # Увеличиваем размер истории в файле
HISTTIMEFORMAT="%F %T " # (Опционально) Добавляет дату и время к командам в history
# Обновлять переменные LINES и COLUMNS после каждой команды (полезно при ресайзе окон)
shopt -s checkwinsize
# ==============================================================================
# 2. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ И ПУТИ (PATH)
# ==============================================================================
# Собираем PATH в одном месте
export PATH="/snap/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH" # Для uv и других локальных бинарников
export PATH="$HOME/.npm-global/bin:$PATH" # Для глобальных npm пакетов
# ==============================================================================
# 3. АЛИАСЫ И УТИЛИТЫ
# ==============================================================================
# Включаем цвета для стандартных утилит
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# Навигация
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# ==============================================================================
# 4. ФУНКЦИИ И ИЗОЛЯЦИЯ
# ==============================================================================
# Изолируем Git от глобальных прокси
git() {
http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= ALL_PROXY= all_proxy= command git "$@"
}
# ==============================================================================
# 5. ПОДКЛЮЧЕНИЕ ВНЕШНИХ МОДУЛЕЙ И СЕКРЕТОВ
# ==============================================================================
# Автодополнение (Bash Autocompletion)
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# NVM (Node Version Manager)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# Пользовательские конфиги (идут в Stow)
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.bash_functions ] && source ~/.bash_functions
[ -f ~/.bash_prompt ] && source ~/.bash_prompt
# ЛОКАЛЬНЫЕ СЕКРЕТЫ (НЕ ДОБАВЛЯТЬ В GIT/STOW!)
[ -f ~/.env.secrets ] && source ~/.env.secrets