我有命令,我想用Dart打電話。爲什麼當命令在Ubuntu終端中運行時,Dart的「Process.start」不能執行Ubuntu命令?
該命令是sonar-runner
,如果我在一個普通的Ubuntu終端中運行它,它會很好地工作。這是因爲我在.profile
文件中編輯了PATH
,因此它變成了全局命令。
但是,如果我寫了一個簡單Process.start
代碼應該觸發同樣的事情:
Process.run('sonar-runner', []).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
我得到的迴應:
Uncaught Error: ProcessException: No such file or directory
Command: sonar-runner
Unhandled exception:
ProcessException: No such file or directory
Command: sonar-runner
我猜這是一個Ubuntu配置事情,因爲我沒有問題以相同的方式通過Dart運行ping localhost
。
什麼可能是錯誤的,以便第三方應用程序在將它作爲新進程運行時找不到全局命令?
更新 - 氣相色譜法確認
我找到了解決我的問題,如下所述:
Set Environment variable using Process.start
對於我的具體情況,該代碼工作:
Process.run("bash", ["-c", "sonar-runner"]).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});
你開始從相同的外殼/終端達特腳本像你直接啓動'聲納runner'? – 2014-08-29 12:35:44
我找到了解決我的問題,如下所述: http://stackoverflow.com/questions/13938217/set-environment-variable-using-process-start – corgrath 2014-08-29 15:03:29
你做了什麼,傳遞路徑'Process.run()'? – 2014-08-29 15:06:29