моно Process.Start, как найти Bash? - PullRequest
2 голосов
/ 15 января 2011

В моем веб-приложении я делаю ниже. Я знаю, что это правильно, потому что я попытался 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_common (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 fileName) [0x00000] в: 0

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

в MySite.QueueManager.ImageQueue2 () [0x00000] в: 0

в MySite.QueueManager.ImageQueue () [0x00000] в: 0

Итак, как мне это исправить? в основном мне нужно создать жесткую ссылку (софт тоже подходит) во время выполнения в моем приложении asp.net.

Я подумал, что, возможно, мне нужен полный путь bash, поэтому я попытался /bin/bash -c, но это тоже не сработало.

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Почему бы не позвонить ln напрямую? Без bash?

Process.Start("ln", params);

Также вам может понадобиться указать полный путь:

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

На самом деле Process.Start("bash") работает для меня, поэтому проверьте $PATH переменную окружения и т. Д.

1 голос
/ 15 января 2011

Нет, вы знаете, что это правильно, когда используется из оболочки .Эта оболочка будет учитывать путь, в отличие от Process.Start.

Просто укажите полный путь к bash, который почти наверняка равен /bin/bash.

...