在我的网络应用程序中,我执行以下操作。我知道它是正确的,因为我试过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
然而这也没有用。
答案 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
。