옆 사이트 슈퍼베이스 주소가 셸에 남으면 넥스트 환경 파일이 아니라 터미널이 안 지운 것이다. source는 폴더를 나가도 남고, 디렉브는 나갈 때 뺀다. 넥스트는 프로세스 값이 파일보다 앞이다. 개발자, Next.js, 슈퍼베이스, 백엔드, API, 깃허브, 데브옵스 기준으로 셸 언로드 칸만 보고 시크릿 글, 미즈 글, includeIf 글과 자리를 섞지 않는다. 2026년 8월 공식 문서.
결론부터 말하겠습니다. 옆 사이트 슈퍼베이스 주소가 셸에 남아 있으면 넥스트 환경 파일이 아니라 터미널이 안 지운 겁니다. source로 키를 읽으면 폴더를 나가도 값이 남습니다. 디렉브는 그 폴더를 나갈 때 넣은 변수를 다시 뺍니다. 넥스트 문서는 이미 있는 프로세스 값이 환경 파일보다 앞이라고 적습니다.
저는 12개 사이트를 형제 폴더로 둡니다. 테크에서 보험 폴더로 옮긴 뒤 검수 스크립트가 이전 프로젝트 키로 붙었습니다. 계정 메일은 includeIf 글, 노드 버전은 미즈 글입니다. 여기는 셸이 폴더를 나갈 때 지우는 칸만 봅니다.
넥스트 개발 서버는 자기 폴더의 환경 파일을 읽습니다. 검수 스크립트, 드리즐, 카카오 콜백 테스트는 그 파일을 안 볼 때가 많습니다. 셸에 남은 값을 그대로 씁니다. 넥스트 문서는 찾는 순서가 프로세스 값, 그다음 로컬 파일, 그다음 기본 파일이라고 적습니다. 프로세스에 이미 있으면 지금 폴더 파일은 그 키를 덮지 않습니다.
저는 테크 폴더에서 슈퍼베이스 주소를 내보낸 뒤, 보험 폴더로 옮겨 마이그레이션을 돌렸습니다. 보험 로컬 파일에는 다른 주소가 있었습니다. 스크립트는 테크 주소를 쳤습니다. 시크릿이 커밋에 붙는 칸은 시크릿 체크 글입니다. 오늘은 창이 들고 다니는 값만 봅니다.
칸
누가 넣나
폴더를 나가면
잘 맞는 자리
셸에 source
지금 창
그대로 남음
한 창, 한 프로젝트만 쓸 때
넥스트 환경 파일
넥스트 프로세스
그 프로세스만 끝남
개발 서버, 빌드
디렉브 폴더 파일
훅이 프롬프트마다
넣은 값을 다시 뺌
형제 폴더, 검수 스크립트
미즈 환경
도구 버전 파일
버전에 묶임
노드 버전 칸, 미즈 글
프로덕션 시크릿
버셀, 액션
로컬 창과 무관
시크릿 체크 글
형제 폴더는 워크트리 글입니다. 그 글은 핫픽스 체크아웃입니다. 워크트리마다 환경 파일을 다시 준비하라고만 적혀 있습니다. 셸이 이전 트리 키를 들고 가는지는 여기입니다.
넥스트를 꺼도 셸 값은 남습니다 | 개발 서버가 읽은 파일과 창에 내보낸 값은 별개입니다. 창을 재사용하면 이전 사이트 키가 다음 명령의 기본값이 됩니다.
source 한 줄이 가장 많이 남는 자리
환경 파일을 셸에 넣는 가장 빠른 방법은 source입니다. 그 한 줄은 빼는 짝이 없습니다.
카카오 콜백을 로컬에서 받을 때 터널 주소와 앱 키를 창에 넣는 습관이 있었습니다. 터널 칸은 터널 글입니다. 키를 창에 남긴 채 다른 사이트로 가면, 그 창의 노드 명령은 이전 앱 키를 씁니다. 로컬 메일이 실주소로 나가는 칸은 메일핏 글입니다. 메일 호스트가 셸에 남아 있으면 같은 실수입니다.
셋으로 내보내는 한 줄도 같습니다. 공백과 따옴표를 깨먹기 쉽고, 나간 뒤에도 남습니다. 홈의 프로필에 사이트 키를 적는 것은 더 넓게 덮습니다. 디렉브 문서가 프로필을 비우라고 적는 이유입니다.
폴더를 나가도 값이 남는 두 줄, 나감과 함께 빠지는 한 줄
# 창에 남는다. 옆 폴더 스크립트가 이 값을 그대로 쓴다
source .env.local
# set -a; source .env.local; set +a
# 디렉브 폴더 파일. 훅이 있으면 나갈 때 뺀다
# https://direnv.net/man/direnv-stdlib.1.html
dotenv_if_exists .env.local
dotenv_if_exists .env
창을 재사용하면 이전 폴더 키가 다음 명령의 기본값이 된다
훅을 단 뒤 허용을 누르기까지
설치만 하면 아무 일도 안 일어납니다. 셸 설정 끝에 훅을 넣고, 폴더 파일을 허용해야 값이 붙습니다.
맥은 홈브류로 받습니다. 제트셸은 설정 파일 맨 아래에 훅 한 줄을 둡니다. 문서가 다른 프롬프트 확장보다 뒤에 두라고 적습니다. 창을 한 번 닫았다 엽니다. 폴더에 파일을 만들면 허용되지 않았다고 나옵니다. 클론한 저장소가 하드를 지우는 명령을 넣을 수 있어서, 기본은 막혀 있습니다. 내가 적은 파일만 허용합니다.
허용 기록은 데이터 홈 아래 허용 폴더에 남습니다. 파일을 고치면 다시 막힙니다. 편집 명령은 저장 뒤 다시 허용합니다. 거절 명령은 그 파일을 다시 막습니다. 맥 초기 도구 목록은 맥 셋업 글입니다. 그 글은 홈브류 순서입니다. 훅과 허용 칸은 여기입니다.
홈브류 설치, 제트셸 훅, 이 폴더만 허용
# https://direnv.net/docs/installation.html
brew install direnv
# https://direnv.net/docs/hook.html
# ~/.zshrc 맨 아래, 다른 프롬프트 확장보다 뒤
eval "$(direnv hook zsh)"
# 창을 재시작한 뒤 프로젝트 폴더에서
# https://direnv.net/man/direnv.1.html
direnv allow .
direnv status
화이트리스트는 형제 사이트 루트에 두지 않습니다 | 설정 파일의 허용 접두사는 그 아래 모든 폴더 파일을 묻지 않고 실행합니다. 문서도 저장소에 쓰는 사람이 임의 코드를 돌릴 수 있다고 적습니다. 사이트마다 허용을 누릅니다.
넥스트 환경 파일은 셸을 안 지운다
넥스트는 개발 서버와 빌드 프로세스에만 파일을 넣습니다. 그 프로세스가 끝나면 창의 값은 그대로입니다.
찾는 순서는 프로세스 값, 환경별 로컬 파일, 로컬 파일, 환경별 파일, 기본 파일입니다. 테스트 모드에서는 로컬 파일을 안 읽습니다. 이미 있는 프로세스 값이 이기므로, 셸에 남은 옆 사이트 키가 있으면 지금 폴더 로컬 파일은 그 키를 못 덮습니다. 공개 접두사가 붙은 이름만 브라우저 묶음에 들어갑니다. 빌드 시점 값으로 고정됩니다.
루트 설정이나 드리즐처럼 넥스트 밖 프로세스면 공식 패키지의 로드 함수를 쓰거나, 디렉브가 창에 넣어 준 값을 씁니다. 저는 보험 폴더에서 넥스트를 켜기 전에 echo를 한 번 봅니다. 테크 주소가 남아 있으면 서버를 안 켭니다. 프로세스가 홈 폴더를 여는 칸은 노드 권한 글입니다. 값은 여기, 열 수 있는 경로는 그 글입니다.
저는 매일 아침 검수 잡을 맥 에이전트로 돌립니다. 그 잡은 로그인 셸이 아니라서 훅이 안 탑니다. 경로만 적고 노드를 켜면, 그 프로세스의 환경은 잡 정의에 적은 값뿐입니다. 폴더 로컬 파일도 안 읽습니다. 넥스트 밖이기 때문입니다. 실행 명령으로 그 폴더 파일을 먼저 읽게 하거나, 로드 함수를 스크립트 첫 줄에 둡니다.
한글 경로 작업/회사 도 같습니다. 디렉브는 현재와 부모에서 폴더 파일을 찾습니다. 워크트리 형제 폴더는 부모가 공유되면 위 파일을 같이 읽을 수 있습니다. 사이트 루트에만 두고, 위 폴더에는 키를 안 둡니다. 문의 메일이 로컬에서 실주소로 나가면 메일핏 글입니다. 그 호스트가 크론 환경에 남아 있는지는 이 칸에서 먼저 봅니다.
훅은 프롬프트에만 붙는다. 잡은 실행 명령으로 폴더 파일을 읽는다
허용을 안 누르면 그 파일은 안 돈다
폴더 파일은 배시 코드입니다. 키=값만 있는 로컬 파일과 다릅니다.
표준 라이브러리의 닷엔브 함수가 로컬 파일을 읽습니다. 파일이 없을 때를 위한 조건 함수도 있습니다. 감시 함수를 적으면 로컬 파일을 고친 다음 프롬프트에서 다시 읽습니다. 비공개 파일을 추가로 읽는 함수는 보안 검사를 건너뛴다고 매뉴얼이 적습니다. 토큰 파일은 깃에 안 올리고, 이름은 로컬만 씁니다.
설정에서 닷엔브 파일을 기본으로 읽게 할 수 있습니다. 2.31부터입니다. 폴더 파일과 닷엔브가 같이 있으면 폴더 파일이 먼저입니다. 엄격 모드를 켜면 없는 변수와 파이프 실패에서 멈춥니다. 기본이 될 예정이라고 매뉴얼이 적습니다. 노드 바이너리 경로는 레이아웃 노드가 모듈 빈을 앞에 붙입니다. 버전 고정은 미즈 글입니다.
커밋하는 폴더 파일은 함수만, 키는 로컬 파일에
# .envrc | 키를 직접 적지 않는다
# https://direnv.net/man/direnv-stdlib.1.html
dotenv_if_exists .env.local
dotenv_if_exists .env
watch_file .env.local
layout node
# .envrc.private 은 깃이그노어. 보안 검사를 건너뛴다
# source_env_if_exists .envrc.private
오늘 폴더 파일 하나에 닷엔브만 적는다
오늘 할 일은 지금 쓰는 사이트 루트에 폴더 파일을 하나 두는 일입니다. 키는 로컬 파일에 그대로 두고, 함수로만 읽습니다. 훅을 설정 끝에 넣고 창을 연 뒤, 허용을 누릅니다. 옆 사이트로 옮겨 echo가 비는지 봅니다.
저는 테크 루트부터 넣었습니다. 보험, 카드 폴더는 다음 날 넣었습니다. 화이트리스트는 안 켰습니다. 크론 잡은 실행 명령으로 바꿨습니다. 프로필의 source 줄은 지웠습니다.
오늘 한 줄 | 셸에 남은 키는 넥스트 파일이 안 지웁니다. 폴더 파일을 허용하고, 나갈 때 빼는지 echo로 확인합니다.