TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #1310 8.42K
Привет, сегодня будем учить zsh автоматически перечитывать конфиг после изменения.
ㅤ
Каждый раз заёбисто делать source ~/.zhsrc после очередных изменений, да и плагинов я актуальных найти так и не смог.

По-хорошему можно было бы и плагин для сообщества накидать, но я ленивая скотина и обошелся Bash скриптом.


Поэтому открываем ~/.zshrc и пихаем в него такое:

ZSH_LAST_MOD=$(stat -c %Y ~/.zshrc 2>/dev/null || stat -f %m ~/.zshrc)
precmd() {
local new_mod=$(stat -c %Y ~/.zshrc 2>/dev/null || stat -f %m ~/.zshrc)
if [[ $new_mod != $ZSH_LAST_MOD ]]; then
if zsh -n ~/.zshrc; then
source ~/.zshrc
ZSH_LAST_MOD=$new_mod
echo "🔄 .zshrc auto-reloaded (OK)"
else
echo "⚠️ .zshrc has syntax errors — reload skipped"
fi
fi
}


Теперь после каждого изменения файла ~/.zshrc конфиг будет автоматически перечитан. НО перечитан он будет только после проверки, если ты своими кривыми руками где-то накосорезил — идешь нахуй. Логично? Логично!

Как это работает:

1. Сохраняет timestamp последней модификации .zshrc

2. precmd() — специальная функция zsh, которая автоматически вызывается перед каждым выводом prompt (после любой команды или Enter). Вызывается незаметно, идеально для фоновых проверок без вмешательства в работу.

3. Дальше логика, сравнивает timestamps — если .zshrc отредактирован и сохранен, переходит к проверке.

4. zsh -n файл — проверяет синтаксис без выполнения (no-execute mode). Возвращает 0 при успехе, > 0 при ошибках (дубликаты, незакрытые скобки и т.п.).

5. Ну а дальше сообщает тебе, все ок или идешь нахуй.​


Нюанс:

echo 'syntax error' >> ~/.zshrc

/home/user/.zshrc:226: command not found: syntax
🔄 .zshrc auto-reloaded (OK)


Проблема в том, что zsh -n проверяет только синтаксис (скобки, конструкции), но не выполнение команд. Имей это ввиду.

Если сделать так:

echo '# syntax error' >> ~/.zshrc
🔄 .zshrc auto-reloaded (OK)


То всё пройдёт замечательно. Ну ты понял к чему я клоню.

Тема прикольная, экспериментируй.

🛠 #bash #linux #shell
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
More from @bashdays
  1. Sep 25, 2026ИИ-агент может быть у каждого: создать персонального помощника можно без настройки серверо…
  2. Sep 25, 2026🚀 Zabbix 8.0 на подходе. Запланируйте обучение команды уже сейчас В ближайшее время ожида…
  3. Sep 24, 2026✨ Как настроить PostgreSQL для продакшен-нагрузок При переходе к продакшен-нагрузкам важно…
  4. Sep 24, 2026Post #1565
  5. Sep 24, 2026Траблшутинг - мастхэв компетенция для инженера В Rebrain траблшутинги проводят уже несколь…
  6. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →