Mono Process.start, как найти Bash?
-
11-10-2019 - |
Вопрос
В моем веб -приложении я делаю ниже. Я знаю, что это правильно, потому что я попробовал 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);
Я получаю исключение ниже, так что с рассуждением выше, я считаю, что это говорит о том, что его говорится.
Не могу найти указанный файл
at System.diagnostics.process.start_Shell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process Процесс) [0x00000] В: 0
at System.diagnostics.process.start_common (System.diagnostics.processStartInfo startInfo, system.diagnostics.process Процесс) [0x00000] В: 0
at system.diagnostics.process.start (system.diagnostics.processstartinfo startinfo) [0x00000] в: 0
at 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.
Я подумал, может быть, мне понадобится полный путь /bin/bash -c
Однако это тоже не сработало.
Решение
Почему бы не позвонить ln
напрямую? Без bash
?
Process.Start("ln", params);
Также вам может потребоваться указать полный путь:
Process.Start("/bin/ln", params);
Фактически, Process.Start("bash")
работает для меня, так что проверьте $PATH
переменная среды и т. д.
Другие советы
Нет, вы знаете, что это правильно при использовании от оболочки. Анкет Эта оболочка примет во внимание путь, в отличие от Process.Start
.
Просто укажите полный путь к Bash, который почти наверняка /bin/bash
.