From 223642dd67e976dcea88eb7a268ffd3d15d875e6 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:39:47 +0800 Subject: [PATCH] Fix https://github.com/2dust/v2rayN/issues/9765 --- v2rayN/ServiceLib/Manager/CoreAdminManager.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/v2rayN/ServiceLib/Manager/CoreAdminManager.cs b/v2rayN/ServiceLib/Manager/CoreAdminManager.cs index 254688e4..db6d9021 100644 --- a/v2rayN/ServiceLib/Manager/CoreAdminManager.cs +++ b/v2rayN/ServiceLib/Manager/CoreAdminManager.cs @@ -34,7 +34,18 @@ public class CoreAdminManager StringBuilder sb = new(); sb.AppendLine("#!/bin/bash"); var cmdLine = $"{fileName.AppendQuotes()} {string.Format(coreInfo.Arguments, Utils.GetBinConfigPath(configPath).AppendQuotes())}"; - sb.AppendLine($"exec sudo -S -- {cmdLine}"); + + // Passing environment variables to the sudo command, here it only xray or sing-box. + if (coreInfo.Environment.Count > 0) + { + var envArgs = string.Join(" ", coreInfo.Environment.Where(kv => kv.Value.IsNotEmpty()).Select(kv => $"{kv.Key}={kv.Value.AppendQuotes()}")); + sb.AppendLine($"exec sudo -S -- env {envArgs} {cmdLine}"); + } + else + { + sb.AppendLine($"exec sudo -S -- {cmdLine}"); + } + var shFilePath = await FileUtils.CreateLinuxShellFile("run_as_sudo.sh", sb.ToString(), true); var procService = new ProcessService(