Что такое dotfile (файлы с точкой) — и почему их спрятали случайно

Ты скопировал проект в новую папку:
cp -r my-app/* new-app/
Запустил — а он не видит ключей API. Git говорит, что тут вообще не репозиторий. И node_modules вдруг лезут в коммит.
Все файлы на месте. Кроме тех, что начинаются с точки: .env, .git, .gitignore. Звёздочка их просто не заметила. Это dotfiles — и история, почему они невидимые, смешнее, чем кажется.
Что такое dotfile
Dotfile — файл или папка, имя которых начинается с точки. .env, .gitignore, .zshrc, .ssh, .git.
Обычно это настройки, а не содержимое. Их пишут один раз и потом не трогают. Поэтому система прячет их из обычных списков, чтобы не мешались.
Их спрятали по ошибке
Вот неожиданная часть. Никто не проектировал «скрытые файлы» в Unix.
В каждой папке есть две служебные записи: . (сама папка) и .. (папка выше). Чтобы ls их не показывал, в ранних версиях дописали проверку. Но проверка смотрела только на первый символ: начинается с точки — пропускаем.
Под эту гребёнку попали все имена с точкой. Об этом рассказывал Роб Пайк, один из авторов Unix. Программисты заметили, что такие файлы не мешаются в списке, — и начали класть туда настройки нарочно. Баг стал соглашением, которому уже полвека.
Отсюда важное следствие: dotfile не защищён. Это не пароль и не шифрование. Он просто не показывается в списке по умолчанию.
Какие dotfiles ты встретишь в проекте
.env— секреты и настройки окружения: ключи API, адрес базы. Подробно — в статье про переменные окружения..gitignore— список того, что git не должен коммитить..git/— папка, в которой живёт вся история репозитория. Удалишь — проект перестанет быть репозиторием..zshrcили.bashrcв домашней папке — настройки терминала. Их читает каждое новое окно. Про то, когда изменения в них подхватываются, — в статье source или запуск скрипта..ssh/— твои SSH-ключи. Самая ценная папка на компьютере..DS_Store— мусор Finder на Mac. Его стоит добавить в.gitignore: он выдаёт имена файлов из папки.
Как их увидеть
- Терминал:
ls -aпоказывает всё, включая скрытое.ls -A— то же без.и... - Finder на Mac:
Cmd + Shift + .— переключает показ скрытых файлов. - Windows: проводник не прячет файлы с точкой. Там скрытость задаёт отдельный атрибут, а не имя.
- Редактор кода: VS Code и Cursor показывают dotfiles в дереве сразу.
Ловушка со звёздочкой
Вернёмся к копированию. * в терминале не совпадает с именами на точку — ни в bash, ни в zsh. Поэтому:
cp -r my-app/* new-app/— теряет.env,.git,.gitignore;mv * ../— оставляет dotfiles в старой папке;rm -rf build/*— не трогаетbuild/.cache.
Как скопировать всё целиком:
cp -r my-app/. new-app/
Точка вместо звёздочки значит «содержимое папки целиком», включая скрытое. Или копируй папку саму: cp -r my-app new-app.
Почему это важно, когда кодишь с ИИ
Агенты и ассистенты тоже любят звёздочку. Если ИИ переносит проект командой с *, .env останется позади. Тогда приложение упадёт с ошибкой про ключ, хотя ключ на месте.
Обратная беда опаснее. .env не виден в списке — и легко забыть, что он есть, когда выкладываешь проект. Перед первым пушем проверь, что .env записан в .gitignore. Как правильно хранить ключи, разобрано в статье как хранить API-ключи безопасно.
Проверить это можно двумя командами:
git check-ignore -v .env
git ls-files | grep env
Первая должна ответить строкой из .gitignore, где упомянут .env. Если она молчит — файл не игнорируется. Вторая показывает, что git уже хранит. Если там есть .env, добавить его в .gitignore мало: git продолжит следить за файлом. Убери его из индекса командой git rm --cached .env и смени ключи — они уже в истории.
Что такое «dotfiles» на GitHub?
Так называют репозитории, где люди хранят свои настройки терминала и редактора: .zshrc, .gitconfig, .vimrc. На новом компьютере их клонируют — и окружение готово за минуту.
Можно ли просто скрыть важный файл точкой?
Нет. Это скрывает файл только из списка. Любая программа и любой человек с ls -a его увидят. Для секретов нужны права доступа и .gitignore.
Почему я не вижу .env в проекте?
Скорее всего, его нет: его создают руками, обычно копируя .env.example. Проверь ls -a в корне проекта.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





