Sandcorp샌드코프 · 웹·AI 제품 개발

새 프로젝트 받는 중 · 갱신 2026.11sandcorp.co.krGitHub

← 팁

디버깅

지운 환경변수가 계속 살아 있으면 그 값을 물려준 부모 프로세스를 찾는다

환경은 프로세스가 뜰 때 복사된다. 설정 파일에서 지워도 이미 뜬 데몬과 그 데몬이 띄우는 새 셸은 옛 값을 계속 들고 있다.

API 키를 설정 파일(/etc/environment, 셸 프로필)에서 지우고 키 자체도 폐기했다. 그런데 몇몇 도구가 여전히 그 키로 접속을 시도하다 401을 받는다. 새 터미널을 열어도 마찬가지다.

환경변수는 프로세스가 뜰 때 부모에게서 복사된다. 설정 파일은 로그인할 때 한 번 읽힐 뿐이다. 그때 뜬 데몬(터미널 관리자, 세션 관리자, 에디터 서버 등)은 옛 값을 그대로 들고 있다. 「새 터미널」도 사실 그 데몬의 자식이라 옛 값을 다시 물려받는다. 파일을 고쳐도 이미 뜬 프로세스 트리는 바뀌지 않는다.

해법

먼저 누가 그 값을 들고 있는지 찾는다. 값은 화면에 찍지 말고 이름만 본다.

# KEY를 환경에 가진 프로세스 목록(값은 출력하지 않음)
for p in /proc/[0-9]*; do
  tr '\0' '\n' < "$p/environ" 2>/dev/null | grep -q '^OLD_API_KEY=' \
    && echo "${p#/proc/} $(cat "$p/comm")"
done
  • 지금 쓰는 셸이나 세션은 그 변수를 빼고 다시 띄운다: env -u OLD_API_KEY bash -l.
  • 값을 물려준 데몬은 재시작한다(로그아웃·재로그인이 가장 확실하다). 데몬을 재시작하지 않으면 새로 여는 터미널마다 옛 값이 되살아난다.

도구 쪽에서도 대비해 둔다. 환경변수 키로 401을 받으면 「자격 없음」과 같은 길(다른 인증 방식으로 넘어가기, 다시 로그인하라는 안내)로 보내야, 폐기된 키 하나 때문에 계속 실패하지 않는다.

문의 →