環境変数を渡してコマンドを実行する

Recipe ID: shell-006

コマンド実行時に特定の環境変数を設定する方法を解説します。

前提条件

プラグインのインストールが必要です。

npm run tauri add shell

Permissions (権限) の設定

src-tauri/capabilities/default.json に以下の権限を追加します。

{
  "permissions": [
    ...,
    "shell:allow-open",
    {
      "identifier": "shell:allow-execute",
      "allow": [
        {
          "name": "node",
          "cmd": "node",
          "args": true
        }
      ]
    }
  ]
}

1. フロントエンドから作成する (TypeScript)

Command.create() の第3引数(オプション)にある env プロパティで環境変数を指定します。
オブジェクト形式で KEY: VALUE のペアを渡します。

import { Command } from '@tauri-apps/plugin-shell';

async function runWithEnv() {
  const cmd = Command.create('node', ['-e', 'console.log(process.env.MY_VAR)'], {
    env: { 'MY_VAR': 'Hello from Tauri' }
  });
  const output = await cmd.execute();
  console.log(output.stdout);
}

2. バックエンドから作成する (Rust)

Command::env() メソッドを使用します。

use std::process::Command;

#[tauri::command]
fn run_with_env() -> String {
    let output = Command::new("node")
        .args(["-e", "console.log(process.env.MY_VAR)"])
        .env("MY_VAR", "Hello from Rust")
        .output()
        .expect("failed to execute process");
    
    String::from_utf8_lossy(&output.stdout).to_string()
}

※ 実際に node コマンドなどを実行するには、適切な Permissions 設定(shell:allow-execute)が必要です。