Зачем: улучшение читаемости и модульности конфигурации bash. Что: удалён монолитный .bashrc, создан модульный .bash_custom с секциями (настройки, PATH, алиасы, функции, модули), добавлена функция git для изоляции от прокси, оптимизирован порядок загрузки модулей. Проверка: source ~/.bash_custom, проверить git, алиасы (ll, la), prompt.
82 lines
3.6 KiB
Bash
82 lines
3.6 KiB
Bash
# ==============================================================================
|
|
# 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
|