用途
tauri-app-shell 用于在 Tauri v2 应用中安全地执行系统命令和打开外部 URL。它基于 Tauri v2 的 shell 插件,帮助开发者完成从插件安装、注册到权限配置和前端调用的完整流程。当用户提到从 Tauri 应用执行系统命令、shell 插件权限与命令白名单、通过 shell 打开外部 URL(作为 opener 插件的替代方案)等需求时,应使用该技能。触发短语包括 "shell"、"execute command"、"spawn process"、"allow-execute"、"system command"。
主要能力
- 安装 shell 插件:
cargo add tauri-plugin-shell - 在 Tauri builder 中注册插件:
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
- 在
src-tauri/capabilities/default.json中配置严格白名单:
{
"permissions": [
{
"identifier": "shell:allow-execute",
"allow": [{ "name": "git", "cmd": "git", "args": ["status"] }]
},
"shell:allow-open"
]
}
- 从前端执行命令并处理输出:
import { Command } from '@tauri-apps/plugin-shell';
const output = await Command.create('git', ['status']).execute();
console.log('stdout:', output.stdout);
- 提供安全优先的配置方式(该插件属于高风险插件)
使用方式
- 安装 shell 插件:
cargo add tauri-plugin-shell - 在 Tauri builder 中注册插件:
.plugin(tauri_plugin_shell::init()) - 在
src-tauri/capabilities/default.json中配置严格白名单,使用shell:allow-execute指定允许的命令与参数,使用shell:allow-open允许打开外部 URL - 在前端通过
@tauri-apps/plugin-shell的Command.create创建并执行命令,读取output.stdout等输出
关键安全要求:必须应用严格白名单——shell 插件风险很高,绝不允许任意命令执行。当需要动态输入时,应对参数使用正则约束,并校验所有用户提供的参数。
适用场景
- 从 Tauri 应用执行系统命令
- 配置 shell 插件权限与命令白名单
- 通过 shell 打开外部 URL(作为 opener 插件的替代方案)
- 需要 spawn 子进程或运行系统命令的 Tauri v2 应用
限制
- 该插件属于高风险插件,必须使用严格白名单,不能允许任意命令执行
- 动态输入需使用正则约束并校验所有用户提供的参数
- 参考资料:https://v2.tauri.app/plugin/shell/