如何通过 C# 进程运行导出 bash 命令

本文关键字:bash 命令 运行 何通过 进程 | 更新日期: 2023-09-27 17:56:48

尝试通过 C# 进程运行导出命令:

现状

Process proc = Process.Start("export", "display='":0.0'"");
proc.WaitForExit();
return proc.ExitCode;

部分错误

Unhandled Exception:
System.ComponentModel.Win32Exception: Cannot find the specified file
  at System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo                                                                                   startInfo, System.Diagnostics.Process process) [0x00000] in <filename unknown>:                                                                                  0

这是我对所有命令所做的方式,它总是有效。

功能示例

Process proc = Process.Start("kill", "810");

那么为什么它不适用于导出命令呢?

如何通过 C# 进程运行导出 bash 命令

kill是系统上内置的shell二进制文件,因此可以在没有shell的情况下运行。

$ type -a kill
kill is a shell builtin
kill is /bin/kill
kill is /usr/bin/kill

export 只是一个内置的 shell,所以你不能在没有 shell 的情况下运行export

$ type -a export
export is a shell builtin

此外,即使您确实export像这样运行,它也只会对它运行的 shell 产生影响,而不会对您的主进程或通过 Process.Start 运行的任何其他进程产生影响。

若要设置可用于当前进程

和以后生成的其他进程的环境变量,需要直接修改当前进程的环境(通过 C#)。