mono Process.Start wie bash zu finden?
-
11-10-2019 - |
Frage
In meinem Webapp kann ich die unten. Ich weiß, seine richtige, weil ich 1 versucht) start_sz in eine Textdatei 2) su www-data 3) Kopieren / Einfügen des Extraktes String Dumping und es hat funktioniert.
var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory());
Process.Start(start_sz);
Ich bekomme die Ausnahme unter so mit Argumentation über i seine sagen bash glauben kann nicht gefunden werden.
Kann die angegebene Datei nicht finden
bei System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo Startinfo, System.Diagnostics.Process Prozess) [0x00000] in: 0
bei System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo Startinfo, System.Diagnostics.Process Prozess) [0x00000] in: 0
bei System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo Startinfo) [0x00000] in: 0
bei System.Diagnostics.Process.Start (System.String filename) [0x00000] in: 0
bei MySite.QueueManager.MakeLink (System.String fn) [0x00000] in: 0
bei MySite.QueueManager.ImageQueue2 () [0x00000] in: 0
bei MySite.QueueManager.ImageQueue () [0x00000] in: 0
Also, wie kann ich dieses Problem beheben? im Grunde muss ich einen Hardlink erstellen (soft ok ist auch) während der Laufzeit in meiner asp.net app.
Ich dachte, vielleicht brauche ich den vollen bash Pfad so habe ich versucht /bin/bash -c
jedoch, dass auch nicht funktionierte.
Lösung
Warum rufen Sie nicht ln
direkt? Ohne bash
?
Process.Start("ln", params);
Darüber hinaus müssen Sie möglicherweise den vollständigen Pfad angeben:
Process.Start("/bin/ln", params);
In der Tat, Process.Start("bash")
funktioniert für mich, so $PATH
Umgebungsvariable überprüfen, etc.
Andere Tipps
Nein, Sie wissen, dass es richtig ist, wenn verwendet von einem Shell . Die Shell wird den Weg berücksichtigen, im Gegensatz zu Process.Start
.
Geben Sie einfach den vollständigen Pfad zu bash, die /bin/bash
fast sicher ist.