360 Secure SkillHub
360 安全技能中心

env-sync

用于比较多个项目或环境中 .env 文件的键名列表,或对照 .env.example 模板找出缺失与多余的键。流程为提取键名、计算差异、输出报告,仅在用户要求时把缺失键以空值追加到目标文件,不复制任何值。

ludens
热度 0.00
最近更新 2026-10-18 23:55:45
分类:效率依赖:代码执行 / 读写文件应用场景:DevOps / 工作流 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add ludens/my-skills/env-sync
Metadata
name
env-sync
description
여러 프로젝트나 환경의 `.env` 파일 키 목록을 비교하거나, `.env.example` 템플릿과 실제 `.env` 사이에 누락되거나 불필요한 키가 있는지 찾아 동기화해야 할 때 사용합니다.

env-sync

개요

.env 파일의 키(항목 이름)를 비교하고 동기화한다. 시크릿 값은 다루지 않고 키 이름만 취급한다.

사용 시점

  • 여러 프로젝트/환경의 .env 키 목록을 비교할 때
  • .env.example 템플릿과 실제 .env를 동기화할 때
  • 새 키 추가 후 템플릿 갱신 누락을 점검할 때

작업 절차

  1. 비교 대상 파일을 확인한다. 기본은 .env.example ↔ .env. 사용자가 지정하면 그 쌍을 쓴다.
  2. 각 파일에서 키를 추출한다 (아래 명령).
  3. 누락·추가 키를 계산한다.
  4. 결과를 보고한다 (아래 출력 형식).
  5. 사용자가 요청한 경우에만 동기화를 적용한다. 누락 키를 대상 파일 끝에 KEY= 형태(빈 값)로 추가한다.

키 추출

grep -E '^[[:space:]]*(export[[:space:]]+)?[A-Za-z_][A-Za-z0-9_]*=' .env | sed -E 's/^[[:space:]]*(export[[:space:]]+)?([A-Za-z_][A-Za-z0-9_]*)=.*/\2/' | sort -u

export KEY=...와 KEY=...를 모두 인식하고, 빈 줄과 # 주석 줄은 무시한다.

비교

comm -23 template.keys env.keys   # 템플릿에만 있음 → .env 누락
comm -13 template.keys env.keys   # .env에만 있음 → 템플릿 누락

동기화 (요청 시에만)

  • 누락 키를 대상 파일 끝에 KEY= 형태로 추가한다.
  • 기존 순서를 유지하고 중복을 만들지 않는다.
  • 값을 복사하지 않는다. 템플릿에는 시크릿 값이 없어야 하므로 빈 값으로 둔다.
  • 주석은 복사하지 않는다.

주의

  • KEY= (빈 값)도 정의된 키다.
  • 인라인 주석(KEY=value # comment)의 #는 값의 일부로 취급한다. 제거하지 않는다.
  • 키는 [A-Za-z_][A-Za-z0-9_]* 패턴만 인식한다. 이 패턴에 안 맞는 특수 키는 수동으로 확인한다.

흔한 실수

실수 처리
값까지 복사함 시크릿 노출 위험 — 키만 복사하고 값은 비운다.
주석 줄을 키로 인식함 ^# 줄은 추출에서 제외한다.
방향 혼동 누락·추가가 어느 파일 기준인지 보고에 명시한다.

출력 형식

누락 (.env.example → .env): DB_PASSWORD
추가 (.env에만): EXTRA_KEY
동기화: .env에 DB_PASSWORD 빈 값 추가