refactor(bash): реорганизована структура bash-конфигурации
Зачем: улучшение читаемости и модульности конфигурации bash. Что: удалён монолитный .bashrc, создан модульный .bash_custom с секциями (настройки, PATH, алиасы, функции, модули), добавлена функция git для изоляции от прокси, оптимизирован порядок загрузки модулей. Проверка: source ~/.bash_custom, проверить git, алиасы (ll, la), prompt.
This commit is contained in:
1 parent
1ee049db4a
commit
c94bcc19de
2 files changed
+81
-147
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user