mono Process.Start come trovare bash?
-
11-10-2019 - |
Domanda
Nel mio webapp faccio il seguito. So che la sua corretta perché ho provato 1) start_sz scarico un file di testo 2) su www-data 3) copiare / incollare la stringa estratto e ha funzionato.
var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory());
Process.Start(start_sz);
ottengo l'eccezione di seguito in modo con il ragionamento di cui sopra credo proprio bash dicendo che non può essere trovato.
Impossibile trovare il file specificato
a System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo startInfo, processo System.Diagnostics.Process) [0x00000] in: 0
a System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, processo System.Diagnostics.Process) [0x00000] in: 0
a System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x00000] in: 0
a System.Diagnostics.Process.Start (System.String nomeFile) [0x00000] in: 0
a MySite.QueueManager.MakeLink (System.String fn) [0x00000] in: 0
a MySite.QueueManager.ImageQueue2 () [0x00000] in: 0
a MySite.QueueManager.ImageQueue () [0x00000] in: 0
Quindi, come faccio a risolvere questo problema? Fondamentalmente ho bisogno di creare un collegamento reale (morbida è ok troppo) in fase di esecuzione nel mio asp.net app.
ho pensato che forse ho bisogno il percorso completo bash così ho provato /bin/bash -c
però che non ha funzionato neanche.
Soluzione
Perché non chiamare direttamente ln
? Senza bash
?
Process.Start("ln", params);
Inoltre potrebbe essere necessario specificare il percorso completo:
Process.Start("/bin/ln", params);
In realtà, Process.Start("bash")
lavora per me, Controllare quindi variabile d'ambiente $PATH
, ecc.
Altri suggerimenti
No, sai che è corretto quando viene utilizzato da una shell . Che la Shell si prende il sentiero in considerazione, a differenza Process.Start
.
Basta specificare il percorso completo di bash, che è quasi certamente /bin/bash
.