我有命令,我想用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