Claude Code 配置目录加载方式分析
文档目的
本文档记录当前仓库内对 Claude Code 配置目录加载方式的分析结论,重点回答两个问题:
- 是否支持通过环境变量自定义配置目录
- 是否支持通过命令行参数直接指定配置目录
结论先说
当前结论是:
- 支持通过环境变量
CLAUDE_CONFIG_DIR自定义配置目录 - 不支持通过命令行参数直接指定配置目录(例如
--config-dir)
也就是说,如果要切换 Claude Code 的配置加载目录,当前标准做法是设置环境变量,而不是传 CLI 参数。
代码依据
核心实现位于:
cc-scode/cluade-code/src/utils/envUtils.ts
其中用于获取 Claude 配置目录的逻辑是:
process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), '.claude')
这说明:
- 如果设置了
CLAUDE_CONFIG_DIR,就优先使用这个目录 - 如果没有设置,则回退到默认目录
~/.claude
从实现方式看,这不是外围脚本约定,而是代码内部直接支持的行为。
命令行参数情况
在当前仓库的 CLI 参数定义中,没有发现类似下面这种参数:
--config-dir--claude-config-dir--config-home
目前能看到的相关能力更接近:
--settings:传入 settings 文件路径或 JSON 内容
但它的作用是补充 settings,而不是切换整个配置根目录,因此不能替代 CLAUDE_CONFIG_DIR。
推荐使用方式
Linux / macOS
CLAUDE_CONFIG_DIR=/path/to/custom-config claude
PowerShell
$env:CLAUDE_CONFIG_DIR="C:\path\to\custom-config"
claude
Windows cmd
set CLAUDE_CONFIG_DIR=C:\path\to\custom-config
claude
适用理解
这个能力适合以下场景:
- 为不同项目隔离 Claude Code 配置目录
- 测试不同 settings / memory / session 文件集合
- 在临时环境中启动独立配置,不污染默认
~/.claude
如果只是想给某次运行额外传一份 settings,则仍应优先考虑 --settings;如果目标是切换“整个配置加载根目录”,则应使用 CLAUDE_CONFIG_DIR。
最终判断
对于“Claude Code 是否支持自己配置配置环境加载目录”这个问题,结论是:
- 支持环境变量方式:
CLAUDE_CONFIG_DIR - 不支持直接命令参数方式:当前未发现对应 CLI 参数
因此,现阶段最直接、最标准的做法,就是通过环境变量来指定配置目录。