# ============================================================================== # 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