【发布时间】:2014-08-29 11:54:53
【问题描述】:
我有命令我想用 Dart 调用。
命令是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);
});
【问题讨论】:
-
您是否像直接启动
sonar-runner一样从同一个 shell/终端启动 Dart 脚本? -
我找到了解决问题的方法,如下所述:stackoverflow.com/questions/13938217/…
-
你做了什么,把路径传给
Process.run()? -
我已经更新了我的原始帖子以包括:)
-
@Claudiod'Angelis 我尝试使用 runInShell 和所有其他可选参数,但它们都不起作用。不过确实如此。
标签: ubuntu dart child-process dart-io