环境变量
cjv 的部分行为可以通过环境变量调整。环境变量适合临时覆盖、在 CI 中注入凭据,以及在不写入 settings.toml 的情况下改变默认行为。
下表列出面向用户的常用变量。除非另有说明,所有变量都在命令运行时读取,因此可以逐次调用临时设置:
CJV_LOG=debug cjv install lts
常用变量
| 变量 | 默认值 | 说明 |
|---|---|---|
CJV_HOME | ~/.cjv | 覆盖 cjv 的主目录(数据根目录)。必须是绝对路径,否则 cjv 会报错退出。该变量优先级高于 settings.toml 中持久化的 home 设置。 |
CJV_TOOLCHAIN | 无 | 强制指定活跃工具链,覆盖所有其他解析方式(目录覆盖、工具链文件、默认工具链)。 |
CJV_LOG | warn | 日志级别,可选 debug、info、warn、error。无法识别的值按 warn 处理。日志输出到标准错误(stderr)。 |
CJV_MAX_RETRIES | 3 | 单次下载失败后的最大重试次数。取值需为非负整数,非法值将被忽略并回退到默认值。 |
CJV_DOWNLOAD_TIMEOUT | 180 | HTTP 下载的超时时间(秒)。取值需为正整数,非法值将被忽略并回退到默认值。 |
CJV_DIST_SERVER | 无 | 覆盖工具链分发根。LTS/STS 使用 <root>/versions.json,nightly 使用 <root>/nightly.json。 |
CJV_NO_PATH_SETUP | 无 | 设为 1 跳过首次安装时的 PATH 自动配置(适用于 CI 环境和集成测试)。其他值(包括未设置)不生效。 |
CANGJIE_STDX_PATH_DYNAMIC | 由 cjv 注入 | 指向 <CJV_HOME>/stdx/<tc>/dynamic,仅当对应工具链安装了 stdx 组件时注入。通常无需手动设置。 |
CANGJIE_STDX_PATH_STATIC | 由 cjv 注入 | 指向 <CJV_HOME>/stdx/<tc>/static,仅当对应工具链安装了 stdx 组件时注入。通常无需手动设置。 |
详细说明
CJV_HOME
CJV_HOME 决定 cjv 存放工具链、组件、文档、下载缓存与设置文件的根目录,默认是用户主目录下的 ~/.cjv。
它必须是绝对路径。相对路径会随当前工作目录变化而指向不同位置,导致从不同目录调用 cjv 时看到不同的安装集合,因此 cjv 会拒绝相对路径并报错退出。
主目录的解析顺序为(从高到低):
CJV_HOME环境变量settings.toml中持久化的home(通过cjv set home <path>写入)- 默认值
~/.cjv
如需将主目录持久化而非每次设置环境变量,参见配置。cjv show home 会打印当前生效的主目录及其来源。
CJV_TOOLCHAIN
CJV_TOOLCHAIN 位于工具链解析优先级的最顶端,会覆盖目录覆盖、工具链文件(cangjie-sdk.toml)和默认工具链。常用于临时切换工具链运行单条命令:
CJV_TOOLCHAIN=nightly cjc --version
完整的解析顺序详见目标与覆盖。
CJV_LOG
将日志级别调到 debug 可以观察下载、解析与代理执行的细节,便于排查问题:
CJV_LOG=debug cjv install lts
CJV_MAX_RETRIES 与 CJV_DOWNLOAD_TIMEOUT
这两个变量用于在网络不稳定或镜像较慢时调整下载行为:
# 提高重试次数并延长超时(适用于慢速网络)
CJV_MAX_RETRIES=5 CJV_DOWNLOAD_TIMEOUT=600 cjv install sts
CJV_MAX_RETRIES 指失败后的重试次数,CJV_DOWNLOAD_TIMEOUT 以秒为单位。两者的非法值都会被忽略并回退到默认值。
CJV_DIST_SERVER
CJV_DIST_SERVER 临时覆盖 settings.toml 或系统后备配置中的 dist_server。它适合在 CI 中切换正式源与预发布源:
CJV_DIST_SERVER=https://artifacts.corp.example/cjv/dist cjv install nightly
设置后,LTS/STS 与对应组件由 <root>/versions.json 描述,nightly 与对应组件由 <root>/nightly.json 描述。cjv 按操作所需通道加载文件;相对制品 URL 以该根为基准,绝对 URL 按 manifest 原样使用。完整布局见内部分发源。
CJV_NO_PATH_SETUP
首次安装工具链时,cjv 会把自身的 bin 目录加入 PATH,使代理命令(如 cjc、cjpm)立即可用。在 CI 环境或集成测试中,自动修改 PATH 往往不必要,可将该变量设为 1 跳过:
CJV_NO_PATH_SETUP=1 cjv install lts
只有值恰好为 1 时才会跳过,其他值不生效。
CANGJIE_STDX_PATH_DYNAMIC 与 CANGJIE_STDX_PATH_STATIC
这两个变量由 cjv 在代理执行和运行时环境配置(cjv exec / cjv envsetup)中自动注入,分别指向 stdx 组件解压后的 dynamic 与 static 目录。仅当当前工具链安装了 stdx 组件时才会注入。
一般情况下无需手动设置它们,cjv 会确保仓颉编译器和构建工具能正确找到扩展库。关于 stdx 组件的安装与目录布局,参见组件;关于运行时环境的配置方式,参见运行时环境。
网络代理(https_proxy / http_proxy / no_proxy)
cjv 的下载会自动遵循标准代理环境变量,在企业受限网络里无需任何 cjv 配置。设置方式、支持的代理方案(http / https / socks5)与注意事项详见网络代理。
高级变量
以下变量面向特殊场景,普通用户通常无需设置。