Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

环境变量

cjv 的部分行为可以通过环境变量调整。环境变量适合临时覆盖、在 CI 中注入凭据,以及在不写入 settings.toml 的情况下改变默认行为。

下表列出面向用户的常用变量。除非另有说明,所有变量都在命令运行时读取,因此可以逐次调用临时设置:

CJV_LOG=debug cjv install lts

常用变量

变量默认值说明
CJV_HOME~/.cjv覆盖 cjv 的主目录(数据根目录)。必须是绝对路径,否则 cjv 会报错退出。该变量优先级高于 settings.toml 中持久化的 home 设置。
CJV_TOOLCHAIN强制指定活跃工具链,覆盖所有其他解析方式(目录覆盖、工具链文件、默认工具链)。
CJV_LOGwarn日志级别,可选 debuginfowarnerror。无法识别的值按 warn 处理。日志输出到标准错误(stderr)。
CJV_MAX_RETRIES3单次下载失败后的最大重试次数。取值需为非负整数,非法值将被忽略并回退到默认值。
CJV_DOWNLOAD_TIMEOUT180HTTP 下载的超时时间(秒)。取值需为正整数,非法值将被忽略并回退到默认值。
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 会拒绝相对路径并报错退出。

主目录的解析顺序为(从高到低):

  1. CJV_HOME 环境变量
  2. settings.toml 中持久化的 home(通过 cjv set home <path> 写入)
  3. 默认值 ~/.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_RETRIESCJV_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,使代理命令(如 cjccjpm)立即可用。在 CI 环境或集成测试中,自动修改 PATH 往往不必要,可将该变量设为 1 跳过:

CJV_NO_PATH_SETUP=1 cjv install lts

只有值恰好为 1 时才会跳过,其他值不生效。

CANGJIE_STDX_PATH_DYNAMICCANGJIE_STDX_PATH_STATIC

这两个变量由 cjv 在代理执行和运行时环境配置(cjv exec / cjv envsetup)中自动注入,分别指向 stdx 组件解压后的 dynamicstatic 目录。仅当当前工具链安装了 stdx 组件时才会注入。

一般情况下无需手动设置它们,cjv 会确保仓颉编译器和构建工具能正确找到扩展库。关于 stdx 组件的安装与目录布局,参见组件;关于运行时环境的配置方式,参见运行时环境

网络代理(https_proxy / http_proxy / no_proxy

cjv 的下载会自动遵循标准代理环境变量,在企业受限网络里无需任何 cjv 配置。设置方式、支持的代理方案(http / https / socks5)与注意事项详见网络代理

高级变量

以下变量面向特殊场景,普通用户通常无需设置。

变量说明
CJV_LANG覆盖界面语言(如 zhenja)。未设置时跟随系统区域设置。
CJV_ALLOW_INSECURE_MANIFEST设为 1 时,允许从非回环(loopback)主机通过明文 HTTP 拉取工具链清单。默认要求 HTTPS,因为清单同时携带下载 URL 与其校验和。仅在信任的内部镜像场景使用,详见内部分发源
CJV_FALLBACK_SETTINGS指定系统级后备设置文件路径;平台默认路径和企业分发示例见部署受管客户端