Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
envocabulary — 모든 셸 환경 변수에 대해 정확한 파일 및 줄 출처를 추적합니다. macOS, Linux, FreeBSD의 zsh 및 bash에서 셸 설정 파일을 감사하여 죽은 항목, 중복, 고아 파일을 찾아냅니다. | Kitploit
도구/GitHubGitHub/sreckoskocilic/envocabulary
Scripting & AutomationConfiguration AuditingForensicsDigital ForensicsIncident ResponseLog Analysis
GitHubsreckoskocilic/envocabulary

envocabulary

모든 셸 환경 변수에 대해 정확한 파일 및 줄 출처를 추적합니다. macOS, Linux, FreeBSD의 zsh 및 bash에서 셸 설정 파일을 감사하여 죽은 항목, 중복, 고아 파일을 찾아냅니다.

저장소 보기
3121일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

envocabulary

CI codecov Go Report Card Release

현재 셸의 모든 변수에 대해, 그 변수를 설정한 파일과 줄을 찾아냅니다 — 또는 어떤 하위 시스템(direnv, launchd, terminal, SSH, system)이 주입했는지도 알려줍니다. 셸 설정이 여러 파일과 백업으로 흩어져 감을 잃었을 때를 위한 몇 가지 정적 파일 명령도 포함되어 있습니다.

이 도구를 만든 이유는 몇 달마다 같은 시간을 허비하며 JAVA_HOME이나 PATH가 왜 예상치 못한 곳을 가리키는지 추적해야 했기 때문입니다. which는 명령을 알고, direnv status는 direnv를 알고, launchctl getenv는 launchd를 알지만, 그 어느 것도 ~/.zshrc:42가 실제 작성자라는 사실은 알려주지 못합니다.

macOS, Linux, FreeBSD에서 zsh 및 bash와 함께 동작합니다.

'아하' 순간

grep -r JAVA_HOME ~는 변수를 언급하는 모든 파일을 보여주지만, 현재 셸에서 어떤 할당이 활성화되어 있는지는 출력만으로는 명확하지 않습니다:

root@kitploit:~
$ envocabulary explain --chain JAVA_HOME
JAVA_HOME
  origin   shell-file
  primary  ~/helpers.sh:3
  chain    ~/.zshrc → ~/helpers.sh
  writers
    ~/.zshenv:8
    ~/helpers.sh:3  (winner)
  value    [hidden, use --values]

설치

한 줄 설치(OS/아키텍처를 감지하고, 바이너리를 $PATH에 넣으며, macOS에서 Gatekeeper를 해제합니다):

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/sreckoskocilic/envocabulary/main/install.sh | sh

또는 go install github.com/sreckoskocilic/envocabulary/cmd/envocabulary@latest. 사전 빌드된 바이너리와 Linux 패키지(.deb / .rpm / .apk / .pkg.tar.zst)는 releases page에서 받을 수 있습니다.

명령

라이브 환경(실행 중인 셸 검사):

  • scan (기본값) — 현재 환경의 모든 변수를 출처별로 그룹화하여 출력
  • explain NAME — 지정된 변수에 대한 전체 귀속 정보 출력
  • path [VARNAME...] — 콜론으로 구분된 경로 변수의 항목별 귀속 정보; --check는 죽은 항목을 찾음

정적 파일:

  • inventory — 모든 셸 설정 파일을 나열하고 유형별 정의 수를 셈
  • catalog — 모든 설정 파일을 병합하여 전체 셸 구성을 출력
  • dedup — 파일 간 export, 할당, 별칭, 함수 중복 보고서
  • dangling — 더 이상 유효한 대상을 참조하지 않는 설정 파일 항목을 나열
  • lost — 고아/백업 설정 파일에만 있는 정의를 나열
  • report — 통합 감사: 삭제 가능, 검토(값이 변경된 중복), dangling, 고아 파일; --html은 타임스탬프가 포함된 .html 파일을 현재 디렉터리에 작성
  • clean [--full] FILE — 제거할 줄을 나열; --full을 사용하면 완전히 정리된 내용을 출력

기타:

  • -V, --version — 버전, 커밋 및 빌드 날짜 출력

플래그는 envocabulary <cmd> -h를 사용하세요.

아래 샘플 출력은 간결함을 위해 ~/를 사용합니다. 이 도구는 report를 제외한 모든 곳에서 절대 경로를 출력합니다.

다른 예: 끊어진 참조 찾기

dangling은 더 이상 유효한 대상을 참조하지 않는 설정 파일 항목을 나열합니다 — JAVA_HOME=/opt/jdk-i-uninstalled 및 source ~/dotfiles/work-old.zsh 같은 잔재들입니다:

root@kitploit:~
$ envocabulary dangling
## ~/.zshrc
  ~/.zshrc:14  source   → ~/dotfiles/work-old.zsh  (source target missing)
  ~/.zshrc:42  export JAVA_HOME  → /opt/jdk-11  (path does not exist)

다른 예: PATH 항목 추적

path는 PATH(또는 MANPATH, FPATH 등)의 각 항목이 어디에서 도입되었는지 보여줍니다:

root@kitploit:~
$ envocabulary path PATH
## PATH
  /opt/homebrew/bin       ~/.zprofile:21
  /usr/local/bin          ~/.zprofile:1
  /usr/bin                /etc/zprofile:1
  /bin                    /etc/zprofile:1
  /usr/sbin               /etc/zprofile:1
  /sbin                   /etc/zprofile:1
  ~/.cargo/bin            ~/.zshrc:22

어떤 셸 시작 할당과도 일치하지 않는 항목은 inherited로 표시됩니다.

--check는 디렉터리가 더 이상 존재하지 않는 항목만 필터링하여 수정할 설정 파일까지 추적합니다:

root@kitploit:~
$ envocabulary path --check PATH
## PATH
  /opt/homebrew/Cellar/go/1.25.1/libexec/bin  ~/.zshrc:17  (does not exist)
  /opt/pkg/env/active/bin                      /etc/paths.d/10-pmk-global:1  (does not exist)
  /Applications/VMware                         /etc/paths.d/com.vmware.fusion.public:1  (does not exist)

죽은 항목이 발견되면 종료 코드 1을 반환합니다(스크립트에서 유용).

제한 사항

  • 줄당 하나의 할당만 처리 (export EDITOR=vim VISUAL=vim은 EDITOR만 기록합니다).
  • dangling은 PATH 형태의 할당이나 확장을 해석하지 않습니다 (export GOPATH=$HOME/go).
  • path 귀속 정보는 xtrace 차이를 기반으로 합니다 — 명시적으로 추가되지 않고 $PATH 확장을 통해 이월된 항목이라도, 해당 항목을 포함하는 첫 번째 할당이 그 항목을 차지합니다.
  • 지원되지 않는 셸: fish, nu, csh/tcsh, PowerShell.

설계상 읽기 전용

envocabulary는 사용자의 셸 설정을 unset, rm 또는 편집하지 않습니다. 비상 상황용 도구가 상황을 더 악화시키는 원인이 되어서는 안 됩니다. 정리를 원한다면 file:line 포인터를 복사해서 직접 편집하세요. clean은 stdout으로 출력하며, 리다이렉트는 직접 수행해야 합니다.

도구 다운로드