mono Process.Start如何找到bash?

时间:2011-01-15 10:33:23

标签: c# linux mono process.start

在我的网络应用程序中,我执行以下操作。我知道它是正确的,因为我试过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进程)[0x00000]中:0

     

在System.Diagnostics.Process.Start_common(System.Diagnostics.ProcessStartInfo startInfo,System.Diagnostics.Process进程)[0x00000] in:0

     

在System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo startInfo)[0x00000] in:0

     

在System.Diagnostics.Process.Start(System.String fileName)[0x00000]中:0

     

at MySite.QueueManager.MakeLink(System.String fn)[0x00000] in:0

     

at MySite.QueueManager.ImageQueue2()[0x00000] in:0

     

at MySite.QueueManager.ImageQueue()[0x00000] in:0

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

我想也许我需要完整的bash路径所以我尝试了/bin/bash -c然而这也没有用。

2 个答案:

答案 0 :(得分:2)

为什么不直接致电ln?没有bash

Process.Start("ln", params);

此外,您可能需要指定完整路径:

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

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

答案 1 :(得分:1)

不,你知道从shell 使用时它是正确的。与Process.Start不同,该shell会考虑路径。

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