環境変数の定義元を調べる方法(zsh)
問題
env コマンドで表示される環境変数がどのファイルで定義されているか分からないことがある。
env | grep BACKLOG_API_KEY
# → BACKLOG_API_KEY=xxxxx と表示されるが、どこで設定されているか不明
解決方法
zsh の起動トレース機能を使う。
zsh -xl 2>&1 | grep変数名
-x: 実行されるコマンドをトレース出力する-l: ログインシェルとして起動する(~/.zprofileや~/.zshenvも読み込む)
例
zsh -xl 2>&1 | grep BACKLOG_API_KEY
出力例:
+/Users/yourname/.zshenv:10> export BACKLOG_API_KEY=xxxxx
ファイルパスと行番号が表示されるので、定義元を特定できる。
意外な定義元
よくある「見落としがちな」定義場所:
.vscode/.env— VSCode の環境変数設定(通常シェルには影響しないが、Claude Code 経由で読み込まれることがある)~/.claude/settings.json— Claude Code の env 設定~/.claude/settings.local.json— Claude Code のローカル設定
補足
bash の場合は -xl の代わりに同様のオプションが使える。
bash -xl 2>&1 | grep変数名