为什么不能进行Dart" Process.start"当命令在Ubuntu终端上工作时执行Ubuntu命令?

时间:2014-08-29 11:54:53

标签: ubuntu dart child-process dart-io

我有命令我想跟Dart打电话。

命令是sonar-runner,如果我在普通的Ubuntu终端中运行它,它可以正常工作。这是因为我编辑了PATH文件中的.profile,因此它成为全局命令。

但是,如果我写了一个简单的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);
});

2 个答案:

答案 0 :(得分:3)

尝试这种方法run it in a normal Ubuntu terminal

Process.run('sonar-runner', [], runInShell: true).then((result) {
  stdout.write(result.stdout);
  stderr.write(result.stderr);
});

答案 1 :(得分:1)

问题似乎是“声纳 - 跑步者”#39;无法找到,你试过完整的路径吗?