我有命令我想用 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 配置的东西,因为我ping localhost
以同样的方式通过 Dart 运行没有问题。
可能是什么问题,以至于第三方应用程序在将其作为新进程运行时无法找到全局命令?
更新 - 找到解决方案
我找到了解决问题的方法,如下所述:
对于我的具体情况,此代码有效:
Process.run("bash", ["-c", "sonar-runner"]).then((result) {
stdout.write(result.stdout);
stderr.write(result.stderr);
});