0 votes

Fichier de préférence endommagé dans /bin/sh

Aujourd'hui, dans Drive Genius 3, j'ai exécuté la fonction "Vérifier les préférences" en Réparation . Cela a donné ce résultat étrange :

/bin/sh : xargs : commande non trouvée

La seule option proposée par Drive Genius est de supprimer le fichier, et il me semble que je ne devrais probablement pas supprimer un fichier dans la base de données de Drive Genius. /bin ! Quelqu'un peut-il m'aider à résoudre ce problème et me dire ce que je dois faire ? Mes spécifications sont ci-dessous. Merci !

MacBook Pro (13 pouces, début 2011)
OS X Yosemite (10.10)
L'erreur a été trouvée en utilisant Drive Genius 3.2.4 sur une clé USB amorçable.

1voto

tripleee Points 820

C'est un peu spéculatif, mais trop long pour tenir dans un commentaire.

Le message d'erreur semble indiquer que Drive Genius appelle un script d'aide qui tente d'exécuter sh et qui contient une erreur qui bâcle le PATH à l'intérieur de ce script.

La preuve du concept est quelque chose comme

#!/bin/sh
PATH=  # oops
xargs </dev/null

Sans accès à Drive Genius, il est presque impossible de trouver l'emplacement précis de l'erreur. La commande pourrait être codée en dur dans un binaire qui fait quelque chose comme

execvp("sh", "-c", "PATH=; xargs");

qui sera difficile à trouver, et impossible à réparer, sans avoir accès au code source du programme.

Une erreur courante des débutants consiste à choisir PATH comme nom de variable pour quelque chose qui ne veut pas réellement modifier le chemin de recherche des exécutables du shell. Le conseil pour les scripts de l'interpréteur de commandes est d'utiliser uniquement des noms de variables en minuscules pour les variables internes de votre scripts, mais ce conseil est largement ignoré, même dans les scripts écrits par de soi-disant professionnels.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X