Pourquoi Dart ‘Process.start “ne peut-il pas exécuter une commande Ubuntu lorsque la commande fonctionne dans le terminal Ubuntu?

J’ai commande je voudrais appeler avec Dart.

La commande est sonar-runner qui fonctionne parfaitement si je l’exécute dans un terminal Ubuntu normal. C’est parce que j’ai édité le PATH dans le fichier .profile pour qu’il devienne une commande globale.

Cependant, si j’ai écrit un code Process.start simple qui devrait déclencher la même chose:

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

Je reçois comme réponse:

 Uncaught Error: ProcessException: No such file or directory Command: sonar-runner Unhandled exception: ProcessException: No such file or directory Command: sonar-runner 

Je suppose que c’est une configuration de Ubuntu, car je n’ai aucun problème à exécuter ping localhost via Dart de la même manière.

Qu’est-ce qui pourrait être faux, de sorte qu’une application tierce ne puisse pas trouver de commandes globales lors de son exécution en tant que nouveau processus?

MISE À JOUR – LA SOLUTION A ÉTÉ TROUVÉE

J’ai trouvé la solution à mon problème, comme décrit ici:

Définir la variable d’environnement à l’aide de Process.start

Pour mon cas particulier, ce code a fonctionné:

 Process.run("bash", ["-c", "sonar-runner"]).then((result) { stdout.write(result.stdout); stderr.write(result.stderr); }); 

Essayez cette approche, run it in a normal Ubuntu terminal :

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

Le problème semble être que “sonar-runner” ne peut pas être trouvé, avez-vous essayé avec le chemin complet?