Problème :
Lors de la tentative d'exécution d'une commande intégrée du shell Linux, tel que "commande", à partir d'un programme Go utilisant exec.Command, le programme échoue avec une erreur indiquant que l'exécutable est introuvable dans le système chemin.
Solution :
1. Utilisation de exec.LookPath :
Une approche native dans Go pour exécuter des commandes intégrées consiste à utiliser la fonction exec.LookPath. Cette fonction recherche dans le système la commande spécifiée et renvoie son chemin s'il existe. Pour utiliser cette méthode, utilisez d'abord exec.LookPath pour rechercher la commande, puis utilisez exec.Command pour l'exécuter avec tous les arguments nécessaires.
Exemple :
path, err := exec.LookPath("command") if err != nil { return fmt.Errorf("command not found: %w", err) } exec.Command(path, "-v", "foo")
2. Utilisation d'un appel système :
Vous pouvez également utiliser le binaire système pour exécuter des commandes shell. L'exemple suivant exécute la commande "command" avec l'option "-v" et l'argument "foo" :
exec.Command("system", "-c", "command -v foo")
3. Exécution via un shell :
Si nécessaire, vous pouvez exécuter la commande via un shell en la faisant précéder du chemin du shell, comme indiqué ci-dessous :
exec.Command("/bin/bash", "-c", "command -v foo")
Remarque :
Il est important d'utiliser la méthode appropriée en fonction de vos besoins. Dans la plupart des cas, l'utilisation de exec.LookPath est l'approche recommandée car elle permet l'exécution native des commandes intégrées. Cependant, pour des scénarios plus complexes ou lors de l'interface avec d'autres outils système, il peut être nécessaire d'utiliser le binaire système ou d'exécuter via un shell.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!