mono Process.Start comment trouver bash?
-
11-10-2019 - |
Question
Dans mon webapp je fais le ci-dessous. Je sais que correct parce que j'ai essayé 1) le dumping start_sz à un fichier texte 2) su www-data 3) copier / coller la chaîne d'extrait et il a travaillé.
var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory());
Process.Start(start_sz);
Je reçois l'exception ci-dessous donc avec le raisonnement ci-dessus, je crois que son bash dire ne peut pas être trouvé.
Vous ne trouvez pas le fichier spécifié
à System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo startInfo, processus System.Diagnostics.Process) [0x00000] en: 0
à System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, processus System.Diagnostics.Process) [0x00000] en: 0
à System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x00000] en: 0
à System.Diagnostics.Process.Start (System.String filename) [0x00000] en: 0
à MySite.QueueManager.MakeLink (System.String fn) [0x00000] en: 0
à MySite.QueueManager.ImageQueue2 () [0x00000] en: 0
à MySite.QueueManager.ImageQueue () [0x00000] en: 0
Alors, comment puis-je résoudre ce problème? Fondamentalement, je dois créer un hardlink (est ok aussi doux) au moment de l'exécution dans mon application asp.net.
Je pensais que je dois peut-être le chemin bash complet, j'ai essayé /bin/bash -c
mais qui ne fonctionne pas non plus.
La solution
Pourquoi ne pas appeler directement ln
? Sans bash
?
Process.Start("ln", params);
vous devrez peut-être spécifier le chemin complet:
Process.Start("/bin/ln", params);
En fait, Process.Start("bash")
travaille pour moi, ainsi vérifier la variable d'environnement $PATH
, etc.
Autres conseils
Non, vous savez qu'il est correct quand il est utilisé à partir d'un shell . Cette coquille prendra le chemin en compte, contrairement à Process.Start
.
Il suffit de spécifier le chemin complet bash, qui est presque certainement /bin/bash
.