gpt4 book ai didi

c# - 如何安全地附加到 ProcessStartInfo.EnvironmentVariables ["PATH"]

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:36 25 4
gpt4 key购买 nike

我目前正在将一个 C# 应用程序从 .NET Framework 移植到 .NET Core,以便能够在 Linux 上运行它。在某个时候,此应用程序使用 System.Diagnostics.Process 类在单独的进程中启动另一个程序。虽然这在一般情况下运行良好,但该特定程序需要使用修改后的 PATH 环境变量运行。这是我为 Windows 所做的(为在 Linux 上测试而更改的路径):

string directory = "/tmp";
ProcessStartInfo processStartInfo = new ProcessStartInfo
{
Arguments = "-c \"echo $PATH\"",
FileName = "/bin/bash",
};
processStartInfo.EnvironmentVariables["PATH"] += ";" + directory;
Process.Start(processStartInfo);

不幸的是,Linux 使用冒号(“:”)作为路径分隔符,因此程序生成

/usr/local/bin:/usr/bin:/bin:/usr/games;/tmp

而不是想要的输出

/usr/local/bin:/usr/bin:/bin:/usr/games:/tmp

我现在的问题是:如何以安全、跨平台的方式正确更新 PATH 变量?是否有一些系统相关的属性来检索分隔符(如 Environment.NewLine 用于换行符或 Path.DirectorySeparatorChar 用于斜杠),或者我是否必须检查手动当前操作系统?

最佳答案

This应该是你需要的:

processStartInfo.EnvironmentVariables["PATH"] += Path.PathSeparator + directory;

关于c# - 如何安全地附加到 ProcessStartInfo.EnvironmentVariables ["PATH"],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57362291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com