Модульная система конфигурации для bash, обеспечивающая синхронизацию настроек между разными компьютерами через Git.
.
├── .bashrc # Основной файл конфигурации bash
├── .bashrc_local # Локальные настройки (не синхронизируется)
├── config/ # Модульная конфигурация
│ ├── main.sh # Главный загрузчик
│ ├── config.sh # Флаги конфигурации
│ ├── paths.sh # Пути к проектам и директориям
│ ├── messages.sh # Сообщения и тексты
│ ├── colors.sh # Цветовые переменные
│ ├── helpers.sh # Вспомогательные функции
│ ├── aliases.sh # Алиасы команд
│ ├── git.sh # Git настройки
│ └── os/ # OS-specific конфигурации
│ ├── windows.sh
│ ├── linux.sh
│ └── macos.sh
├── scripts/ # Скрипты управления
│ ├── install.sh # Установка
│ ├── update.sh # Обновление
│ └── uninstall.sh # Удаление
└── README.md # Эта документация
- Клонируйте репозиторий:
git clone <ваш-репозиторий> ~/bash-sync
cd ~/bash-sync- Запустите установку:
chmod +x scripts/install.sh
./scripts/install.sh- Настройте локальные параметры:
nano ~/.bashrc_local
# Отредактируйте:
# export PROJECTS_ROOT="/ваш/путь/к/проектам"
# export GIT_USER_NAME="Ваше Имя"
# export GIT_USER_EMAIL="ваш@email.com"- Примените изменения:
source ~/.bashrcМодули загружаются в следующем порядке:
- Базовые настройки (.bashrc) - история, shell опции
- Основные модули:
config.sh- флаги конфигурацииcolors.sh- цветовые переменныеmessages.sh- тексты сообщенийhelpers.sh- вспомогательные функцииpaths.sh- пути к проектам
- OS-specific модули (автоматически определяется ОС)
- Git конфигурация
- Алиасы команд
Управляющие флаги:
export CFG_IS_LOG_ON=true # Логирование действийОсновные пути (переопределяются в .bashrc_local):
export PROJECTS_ROOT="/d/Project"
export WORK_ROOT="$PROJECTS_ROOT"
export EXERCISES_ROOT="$PROJECTS_ROOT/_EX"
# и другие...Алиасы для:
- Bash (
c,..,...) - Git (
gs,gp,gck, и т.д.) - Node.js (
i,s,dv) - Docker (
docker-up,docker-down) - Проектные команды (
osmohub,stroybase)
Вспомогательные функции:
cd_safe()- безопасный переход в директориюpaths()- показывает текущие путиreload()- перезагружает конфигурациюedit-config()- редактирует конфигурацию
Файл ~/.bashrc_local НЕ синхронизируется через Git и предназначен для настроек конкретной машины:
# Пути к проектам (переопределяют paths.sh)
export PROJECTS_ROOT="$HOME/Projects" # Linux/Mac
# или
export PROJECTS_ROOT="/c/Users/User/Projects" # Windows
# Git конфигурация
export GIT_USER_NAME="Ваше Имя"
export GIT_USER_EMAIL="ваш@email.com"
# Секретные ключи (НИКОГДА не коммитьте!)
export DOCKER_HUB_TOKEN="xxxxxx"
export NPM_TOKEN="xxxxxx"
# Машинно-специфичные алиасы
alias mymachine='echo "Это моя личная машина"'Система автоматически определяет ОС и загружает соответствующий файл:
- Windows:
config/os/windows.sh - Linux:
config/os/linux.sh - macOS:
config/os/macos.sh
cd ~/bash-sync
./scripts/update.sh
source ~/.bashrcРезервные копии создаются автоматически при install.sh и update.sh в ~/.bash_backup/.
# Восстановление .bashrc из backup
cp ~/.bash_backup/YYYYMMDD_HHMMSS/.bashrc.backup ~/.bashrc
# Восстановление .bashrc_local (если сохраняли вручную)
cp ~/.bash_backup/uninstall_YYYYMMDD_HHMMSS/.bashrc_local ~/cd ~/bash-sync
./scripts/uninstall.shpaths # Показать текущие пути
bshtest # Базовый тест конфигурации
reload # Перезагрузить конфигурацию
edit-config # Редактировать конфигурациюpro # Перейти в корень проектов
proex # Перейти в папку упражнений
.. # На уровень выше
... # На два уровня вышеgs # git status
gck # git checkout
gb # git branch
gp # git push
gpl # git pulldocker-up # Запустить контейнеры
docker-down # Остановить контейнеры
docker-restart # Перезапустить контейнеры- Windows: Git Bash, Cmder, WSL
- Linux: Ubuntu, Debian, CentOS
- macOS: Terminal, iTerm2
export BASH_CONFIG_DEBUG=true
source ~/.bashrcecho "BASH_CONFIG_LOADED: $BASH_CONFIG_LOADED"
echo "BASH_CONFIG_OS: $BASH_CONFIG_OS"
echo "PROJECTS_ROOT: $PROJECTS_ROOT"# Базовый тест (команда из helpers)
bshtest
# Или вручную
paths
echo "BASH_CONFIG_LOADED: $BASH_CONFIG_LOADED"- Проверьте существование файлов:
ls -la ~/config/
ls -la ~/.bashrc_local- Проверьте симлинк (если используете симлинк вместо копирования):
ls -la ~/config
# При копировании: config — каталог. При симлинке: config -> ~/bash-sync/config- Включите отладку:
export BASH_CONFIG_DEBUG=true
source ~/.bashrcЕсли возникает ошибка с __git_ps1, временно отключите git prompt:
# В .bashrc_local добавьте:
export NO_GIT_PROMPT=1Если у вас уже есть настройки:
- Перенесите алиасы из
~/.bash_aliasesвconfig/aliases.sh - Перенесите пути в
config/paths.sh - Создайте
~/.bashrc_localс машинно-специфичными настройками - Запустите
./scripts/install.shдля установки
- Форкните репозиторий
- Создайте ветку для ваших изменений
- Внесите изменения в соответствующие модули
- Протестируйте на всех ОС (Windows/Linux/macOS)
- Отправьте pull request
MIT License - свободное использование и модификация.
Примечание: Все секретные данные (токены, пароли, ключи) должны храниться только в ~/.bashrc_local, который НЕ добавляется в Git репозиторий!