Commandes Terminal "not found" (Mac OSX 10.6)

politicus

Membre enregistré
4 Mai 2011
3
0
Bonjour,

Nouveau sur Mac, je découvre que je peux ne plus utiliser aucune commande du terminal.

A chaque tentative, j'ai "command not found".

Lorsque je fais echo $PATH, j'obtiens /usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin

Lors de ma tentative d'installer git comme j'avais comme message d'erreur "git command not found", j'ai modifié le PATH. Peut être un peu trop ?

Comment puis-je faire pour revenir à une situation normale.

Merci par avance de vos réponses.
 
Dernière édition:
Beaucoup trop en effet... Quand on modifie la variable PATH, il faut penser à la réinsérer :
Bloc de code:
export PATH="/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin:$PATH"
ou
Bloc de code:
export PATH="$PATH:/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin"
selon ce que l'on veut privilégier.
 
Quelles commandes ? A priori la commande "echo", elle, marche.
Les commandes de base Unix sont dans le répertoire /bin .
Si tu tapes /bin/ls par exemple, ça devrait marcher. Sauf si tu as mis le bazar dans les répertoires système. Consulte une doc Unix de base.
 
cela faisait au moins une bonne heure que je galérais sans vraiment comprendre comment faire pour me sortir du pétrin dans lequel je m'étais mis.

Merci encore.:up:
 
Certes. Mais je crois que j'ai vu l'existence de ce fil de présentation largement après mes premiers posts... ;)
 
Beaucoup trop en effet... Quand on modifie la variable PATH, il faut penser à la réinsérer :
Bloc de code:
export PATH="/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin:$PATH"
ou
Bloc de code:
export PATH="$PATH:/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin"
selon ce que l'on veut privilégier.
Que privilégie-t-on selon qu'on écrive $PATH au début ou à la fin du chemin ?
 
Petit point de fonctionnement :
Lorsqu'on ajoute un ou plusieurs répertoires, on rend accessibles les commandes qu'ils contiennent.
Lorsque le shell cherche une commande il prend les répertoires indiqués par la variable PATH, les uns après les autres, de gauche à droite.
Si, dans l'ensemble des chemins, on a des homonymes, le premier trouvé gagne.

Donc ajouter les chemins en tête ou en queue de liste n'est pas indifférent.

Un exemple tout simple : j'ai compilé et installé une nouvelle version de bash et elle s'est installée dans /usr/local/bin. Comme j'ai volontairement mis ce répertoire en tête de liste dans PATH, c'est la nouvelle version de bash qui est toujours lancée, et pas celle venue avec le système.

Ça a donc un certain impact... ;)

Si on ne veut courir aucun risque, on ajoute les répertoires en fin de liste. Sinon, il faut que le choix soit raisonné. Parfois, on veut ajouter un chemin simplement pour un lot de nouvelles commandes, sans penser qu'il peut contenir des homonymes de commandes existantes et c'est l'embrouille.
 
Et ici, où le chemin /usr/local/git/bin est répété trois fois de suite, que change le déplacement de $PATH ?? :heu:
 
Le fait de répéter consécutivement le chemin est inutile mais ne change rien.
Mais si, dans la variable PATH est déjà défini un chemin contenant la commande git (par exemple via une installation de MacPort), dans un cas c'est cette commande qui sera appelée, dans l'autre ce sera celle de /usr/local/git/bin.
À vrai dire, je n'avais même pas fait attention à la répétition ;)

---------- Nouveau message ajouté à 18h29 ---------- Le message précédent a été envoyé à 18h26 ----------

Pour être plus explicite :
- j'installe MacPorts
- avec MacPorts, j'installe GIT.

J'ai donc la commande dans /opt/local/bin. Si, maintenant, je l'installe aussi dans /usr/local/git/bin et que j'ajoute son chemin :
- si je le mets en queue de PATH, ça ne servira à rien
- si je le mets en tête de PATH, j'utiliserai (par défaut) la commande de /usr/local/git/bin.
 
J'ai compris ton explication de la différence entre /opt/local/bin:/usr/local/git/bin et /usr/local/git/bin:/opt/local/bin


Alors je suppose que $PATH donne le point de départ de la hiérarchie des chemins ??

= $PATH:/opt/local/bin:/usr/local/git/bin équivaudrait à /usr/local/git/bin:/opt/local/bin:$PATH ???

Ou je me gourre complètement ? :hein:
 
Un peu ;)

Ce qu'il faut voir est que PATH est initialisée au démarrage du shell par une succession de fichiers de configuration. Et il faut bien différencier PATH qui est le nom de la variable et $PATH qui représente sa valeur.

Un exemple : le shell démarre. La variable PATH est initialisée par la lecture du fichier /etc/paths et des fichiers présents dans le dossier /etc/paths.d.
Et $PATH vaut alors "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin".
Puis le shell analyse les fichiers de configuration, dont : ~/.bashrc.

Imaginons que tu installes MacPorts. Tu modifies ton fichier ~/.bashrc de sorte que les commandes que tu installes soient prises en compte. En ajoutant :
  1. Bloc de code:
    export PATH="$PATH:/opt/local/bin"
    La variable PATH vaut alors :
    "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin"
  2. Bloc de code:
    export PATH="/opt/local/bin:$PATH"
    La variable PATH vaut alors :
    "/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"

Si, dans le cadre de MacPorts, tu installes une commande qui n'existe pas dans le système, par exemple wget, les cas 1) et 2) sont équivalents.
Si dans le cadre de MacPorts, tu installes une nouvelle version de Ruby, dans le cas 1) tu utiliseras par défaut celle du système (l'installation passera inaperçue sauf à appeler la nouvelle commande explicitement avec son chemin complet), dans le cas 2) par défaut c'est celle installée avec MacPorts qui prévaudra.