跳到主要内容
版本:Next

管理 Shell 预设

Shell 预设把脚本安装到 Shine 的受管目录,并在 ~/.shine/bin/ 创建可直接调用的命令入口。Shine 当前支持 Bash、Zsh 和 PowerShell 的 profile 与命令目录管理;原生命令入口使用 .sh 或 .ps1,Bun 可作为另一种跨平台命令运行时。

内置类别、平台限制、当前会话命令和所需环境变量见内置预设。

查看与安装​

shine shell list
shine shell install proxy
shine shell install utils/shine-env-export # 只安装这一个命令
shine shell install # 安装当前平台可用的全部类别

也可以使用自动识别 shell 或 app 类别的简写:

shine install proxy
shine install shell/utils/shine-env-export

类别 target 会启用当前平台可用的全部命令;只需要其中一个命令时,使用明确的 category/command target。修改型命令不接受裸命令名,因为不同类别可能出现同名命令。

生成的 Shell profile 会按字面值处理目录名称,包括空格、美元符号和反引号。主目录下的路径会保留可移植的 $HOME 引用。

安装后需打开新终端或重新加载 shell profile。需要补全时运行:

shine completions install

Profile 结果中的路径会转义终端控制字符。若 shell 配置路径包含控制字符或无法表示为 UTF-8, 激活提示会要求打开新 shell,不提供可复制的重新加载命令;生成的 profile 仍使用原始路径。 普通路径继续显示带引号的重新加载命令。

修复安装​

当受管脚本、命令入口或 PATH 片段需要按当前预设重建时:

shine shell install proxy --replace-managed
shine install shell/proxy --replace-managed

--replace-managed 会覆盖 Shine 管理的对应内容。先用 shine info shell/proxy --diff 检查状态,避免把有意的本地修改当作损坏处理。

批量操作遇到命令冲突时,修复提示会指出所属类别,模板生成的脚本也一样。冲突输出会转义命令名 和路径中的控制字符。类别含控制字符时,提示会要求使用原类别参数,不提供可复制命令。 删除或替换前,请先检查提示中的路径。

切换预设来源后,可运行 shine upgrade shell/<CATEGORY> 更新已安装命令。Shine 会根据安装记录识别旧路径上的受管命令,再迁移到当前部署位置;不会因此接管无关命令文件。外部代码仍需按当前计划审阅和确认。

在 Windows 上,从 CMD 启动原生 PowerShell 命令时,脚本路径中的单引号会被原样保留 (例如用户名目录 O'Connor)。运行 shine upgrade shell/<CATEGORY> 更新已有启动器; 原有安装记录仍可用于恢复。更新完成后,后续升级审阅会将未发生变化的启动器识别为最新状态。

安装、升级或卸载中断后怎么办​

同一配置目录中的 Shell 变更会依次执行,包括恢复和实时渲染。等待结束后,Shine 会重新校验 已审阅的 Plan;若相关状态发生变化,需要重新审阅再重试。等待超过 30 秒会报错,不执行等待中的 操作。其它类别的安装记录会保留。

如果 Shell 预设操作意外中断,Shine 可能会暂停后续修改操作,并提示先执行恢复:

shine shell recover

查看恢复计划,确认后执行。Shine 会根据中断位置撤销未完成的变更,或保留已完成的操作并清理残留文件。 恢复 Shell profile 中的托管区块时,Shine 会保留无关内容以及 Unix 上当前的文件权限。

如果相关文件在中断后被修改,Shine 会停止恢复并保留这些文件,避免覆盖你的修改。请保留报错信息和相关文件,根据提示排查,不要手动删除恢复记录或回滚文件。

自动化环境可使用 shine shell recover --yes 跳过交互确认;安全检查仍会执行。

卸载​

shine shell uninstall proxy --dry-run
shine shell uninstall proxy
shine shell uninstall utils/shine-env-export

非 dry-run 的 install、uninstall 以及 shine upgrade 会显示计划改动和所需权限。确认默认是 No; 自动化必须传入 --yes,但 Plan 与安全检查仍会执行。--dry-run 是独立预览,不能与 --yes 组合。

每个安装或 source 的 Shell 入口都会作为未隔离代码交付。External 和 overlay command 在安装前都 需要人工确认当前 Plan 或已有匹配的持久 grant,无论权限表缺失、为空、包含枚举项, 还是使用兼容字段 opaque_code = "unrestricted"。作者能力说明仅供审阅,不是文件、网络或命令限制。 详见自定义 Preset 能力说明。 本地开发期间,只有准备让所显示来源中的后续代码修改继续受信任时,才为 grant 添加 --development。 当生命周期 Plan 因缺少信任而被阻塞时,Shine 会报告精确到 command 的 shine trust inspect shell/<CATEGORY>/<COMMAND> 和 shine trust grant 后续命令。

Snapshot trust 与默认 snapshot 部署配合使用:Shine 把已审阅类别内容复制到受管目录,之后的来源 修改只有经过显式审阅更新才进入已安装命令。external_shell_mode = "live" 必须使用 development trust,因为以后调用或 source 会读取可变的受信任来源。Snapshot trust 与 live 部署的组合会被阻塞, 该规则同样覆盖 Bun launcher、Windows shim 和调用时 transform。

同一类别的已安装命令共享一个 snapshot 目录。更新替换共享代码时,安全 Plan 会列出选中的命令和 所有受影响的已安装兄弟命令;每个受影响 external command 都必须由本次人工确认或匹配 grant 授权。 未安装兄弟不需要 grant,也不会被安装。升级 Shine 后会保留已有 live launcher,但 list/info 会显示 development trust required,直到重新审阅。卸载和恢复无需先信任即将移除的代码。

使用 shine list 查看已安装资源;shine shell list 展示可用 Shell 预设。 按命令卸载会保留同类别下其他已安装命令;只要兄弟命令仍需要,共享 preset 或 snapshot 文件 就可能继续保留。 卸载最后一个类别后,可以用 shine shell uninstall 清理剩余的受管 profile 和启动集成。 Shell 配置中的其他内容会保留;确认前可用 shine shell uninstall --dry-run 预览清理范围。

卸载默认清理空的受管目录。未指定 target 时,它会清理整棵内部 Shell 预设缓存树, 包括存放在其中的额外文件。指定类别或命令 target 时,会保留额外缓存文件,以及其他已安装 兄弟命令仍需要的共享文件。外部预设源目录始终保留;适用的受管启动器 和安装 snapshot 仍会被移除。卸载不会删除 ~/.shine/config.toml。 请审阅 Plan,并用 --dry-run 检查所选范围。

shine uninstall shell/<category>[/<command>] 使用相同的目标限定行为。--purge 已移除; 旧命令请直接去掉该选项。App 类别卸载会删除整个内部类别缓存(包括额外文件), 与 Shell 的目标限定行为不同,详见 App 预设。

内置常用命令​

类别命令用途
image-toolsimg-compress、img-resize、img-convert使用 Bun 1.3.14 或更高版本批量处理 JPEG、PNG、WebP
proxysetproxy、usetproxy设置或清除当前终端会话的代理变量
utilscopyfile通过 OSC52 将文件内容复制到本地剪贴板
utilsshine-env-export将 Shine env 值载入当前 shell
utilsshine-theme-sync输出当前终端明暗主题的 shell export 语句
agentccenv选择 Codex、DeepSeek 或 Qwen provider,并在隔离的子进程环境中启动 Claude Code;需要 Bun

某些类别按平台提供不同脚本;shine shell list 只显示当前平台可用的条目。

ccenv 默认通过本机 http://127.0.0.1:8317 的 CLIProxyAPI 使用 Codex,也可交互选择 DeepSeek 或 Qwen。相应凭据使用 CLIPROXYAPI_AUTH_TOKEN、DEEPSEEK_API_KEY 或 QWEN_API_KEY;加密值使用同名的 _SECRET 后缀,旧版 _GPG_SECRET 仍可读取。所选 provider 的变量只传给启动的 Claude 进程,不会修改当前终端。Claude 参数会原样转发;若首个参数与 ccenv 的 --run 兼容参数冲突,先写 --:

ccenv --print "hello"
ccenv -- --run

想用 Bun 编写跨平台命令预设?请参阅可选运行时的 Shell 入口。