プロセス内で環境変数を設定する

Recipe ID: sys-012

アプリケーションの実行プロセス内でのみ有効な環境変数を設定する方法を解説します。
これは、子プロセスを起動する前に特定の環境変数をセットしたい場合などに役立ちます。

解説

Rust の std::env::set_var を使用します。
あくまで「現在のプロセス」および「そのプロセスから起動される子プロセス」に対して有効であり、システム全体の環境変数を書き換えるものではありません。

Rust 側の実装

src-tauri/src/lib.rs (または main.rs):

use tauri::command;
use std::env;

#[command]
fn set_temp_env(key: String, value: String) {
    env::set_var(key, value);
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![set_temp_env])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

サンプルコード (Frontend)

import { invoke } from '@tauri-apps/api/core';

async function setupEnvironment() {
  await invoke('set_temp_env', { key: 'MY_APP_MODE', value: 'debug' });
  console.log('環境変数を設定しました');
  
  // 確認(確認用のコマンド get_env_var があれば)
  // const val = await invoke('get_env_var', { name: 'MY_APP_MODE' });
  // console.log(val); // => "debug"
}

setupEnvironment();