如何通过C#进程运行export bash命令?

时间:2015-06-16 19:39:41

标签: c# bash

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

现状

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");

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

1 个答案:

答案 0 :(得分:3)

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运行的任何其他进程产生影响。< / p>

要设置一个可供当前进程和其他生成进程使用的环境变量,您需要直接修改当前进程的环境(通过C#)。

相关问题