C# mono进程。如何开始查找bash?

C# mono进程。如何开始查找bash?,c#,linux,mono,process.start,C#,Linux,Mono,Process.start,在我的webapp中,我执行以下操作。我知道它是正确的,因为我尝试了1)将start_sz转储到文本文件2)su www data 3)复制/粘贴提取字符串,结果成功了 var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDire

在我的webapp中,我执行以下操作。我知道它是正确的,因为我尝试了1)将start_sz转储到文本文件2)su www data 3)复制/粘贴提取字符串,结果成功了

var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory());
Process.Start(start_sz);
我得到了下面的例外,所以根据上面的推理,我相信它的意思是bash找不到

找不到指定的文件

在System.Diagnostics.Process.Start_shell(System.Diagnostics.ProcessStartInfo-startInfo,System.Diagnostics.Process Process)[0x00000]中:0

在System.Diagnostics.Process.Start_公共(System.Diagnostics.ProcessStartInfo-startInfo,System.Diagnostics.Process Process)[0x00000]中:0

在System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo-startInfo)[0x00000]处输入:0

在System.Diagnostics.Process.Start(System.String文件名)[0x00000]中:0

在MySite.QueueManager.MakeLink(System.String fn)[0x00000]中:0

在MySite.QueueManager.ImageQueue2()[0x00000]中:0

在0中的MySite.QueueManager.ImageQueue()[0x00000]处

那么,我该如何解决这个问题呢?基本上,我需要在运行时在我的asp.net应用程序中创建一个硬链接(软链接也可以)


我想也许我需要完整的bash路径,所以我尝试了
/bin/bash-c
,但是这也不起作用。

不,你知道它在shell中使用时是正确的。该shell将考虑路径,而不像
Process.Start


只需指定bash的完整路径,几乎可以肯定是
/bin/bash

为什么不直接调用
ln
?没有
bash

Process.Start("ln", params);
此外,您可能需要指定完整路径:

Process.Start("/bin/ln", params);


事实上,
Process.Start(“bash”)
对我有效,因此请检查
$PATH
环境变量等。

@acidzombie24:很高兴它有帮助!:)啊#$%^&*(!我需要调用Process.Start with(string,string)。它认为args是文件名的一部分,因此找不到文件。为什么Process.Start不强制您使用(name,”),它更不容易出错。@acidzombie24:
Process.Start(string)
创建
new ProcessStartInfo(string)
Process.Start(string,string)
-
newprocessstartinfo(string,string)
看看
ProcessStartInfo
构造函数:一个设置
参数,另一个-不是。所以这只是语法糖重载,我不想要它。一个长串,但你知道为什么进程。Start有一个参数重载,而不是强制两个参数(bin,args)。我可以发誓,我在一年前最后一次使用Process.Start时犯了完全相同的错误。@acidzombie24:不是JonSkeet,但实际上有很多情况下,您希望执行一个可执行文件,而不需要传递任何参数。