web-dev-qa-db-fra.com

Mac OS X: endroits classiques où les fichiers binaires doivent vivre

J'ai téléchargé une application qui est une application de ligne de commande et je souhaite la placer à un endroit où je peux l'exécuter à partir de la ligne de commande sans avoir à taper explicitement le chemin.

  1. Quels sont les chemins conventionnels utilisés pour quelque chose comme ça? /usr/bin? Existe-t-il différentes options, une si je le souhaite pour tous les utilisateurs et une autre si je le souhaite uniquement pour un utilisateur en particulier, tel que mon compte d'administrateur?

  2. Ou devrais-je le mettre dans son propre répertoire, sous le répertoire Applications, et l'ajouter au chemin? Si tel est le cas, quel fichier contrôle où le chemin est défini?

55
Jason S

Réponse centrale: vous voulez probablement /usr/local/bin. En fonction de la date récente de votre macOS, vous devrez peut-être mettre à jour votre $PATH par défaut. Voir ci-dessous pour plus de détails.

UPDATE 12-01-2018 Depuis que j'ai écrit ma réponse initiale, Apple a changé son $PATH par défaut. Par conséquent, une grande partie de ce que je dis ci-dessous n’est pas pertinente pour les Mac récents. Si vous tapez echo $PATH dans un terminal et que /usr/local/bin est la première, vous pouvez ignorer tout ce qui suit pour changer votre $PATH.

réponse originale

Les Mac sont inhabituels à cet égard. La variable par défaut $PATH pour un utilisateur régulier ressemble à ceci:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

En mettant /usr/local/bin après /usr/bin et /bin, Mac améliore le système habituel. Normalement, vous pouvez insérer quelque chose dans /usr/local/bin (disons un deuxième interpréteur Perl, compilé de manière non standard), puis un utilisateur habituel utilisera d'abord le type personnalisé, plutôt que l'ensemble du système. C'est bon. Les utilisateurs peuvent obtenir des variantes, mais le système reste pur. Cependant, étant donné le $PATH par défaut d’Apple, les éléments dans /usr/bin ou /bin seront trouvés avant tout élément dans /usr/local/bin. (Cela va à l’encontre du but d’installer, par exemple, le Perl personnalisé dans /usr/local/bin.)

Pour résoudre ce problème, vous pouvez modifier le $PATH de l'utilisateur normal en modifiant le fichier .profile dans le répertoire de base de l'utilisateur. (Ce fichier peut ne pas exister, si vous avez une nouvelle installation. Dans ce cas, créez-le.)

Semi-connexe: Homebrew fournit une excellente gestion des packages pour Mac. Par défaut, Homebrew installe le logiciel dans /usr/local, mais de manière à ce qu'il soit très facile de supprimer des éléments et de revenir ultérieurement à l'état Vanilla.

47
Telemachus

/usr/local/bin et /usr/local/sbin valent la peine d’être ajoutés à votre chemin, car beaucoup de makefiles pour les builds sources sont installés par défaut.

Si vous utilisez MacPorts , il vaut également la peine d'ajouter /opt/local/bin et /opt/local/sbin.

La meilleure façon de faire est d’ajouter

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

dans le fichier .bashrc de votre répertoire personnel (ce qui est masqué, la meilleure façon de le faire est donc la CLI), ou, si vous souhaitez modifier le chemin d'accès au système, ajoutez la même ligne à /etc/bashrc (non masqué), mais vous aurez besoin de Sudo pour le faire.

Si vous n'avez pas de .bashrc dans le domicile d'un utilisateur, vous pouvez en créer un et y ajouter cette ligne, mais n'oubliez pas de modifier les autorisations sur le fichier que vous avez créé pour le rendre lisible par l'utilisateur en question (évidemment non pertinent si vous le souhaitez. faites-le pour votre propre profil).

Le $PATH à la fin ajoute le chemin d'accès par défaut du système à ce que vous avez indiqué auparavant. Notez que le système recherche les fichiers binaires dans l'ordre des chemins d'accès. Ainsi, si vous installez un fichier binaire dans /usr/local ou /opt/local également installé par défaut sur le système, les versions que vous installez seront trouvées en premier, ce qui peut (rarement) perturber des choses. Cela vaut la peine de faire attention.

Une bonne information est ici .

Je devrais noter que ce qui précède suppose que vous utilisez Bash pour le shell, qui est la valeur par défaut de Mac OS X v10.4 (Tiger) et Mac OS X v10.5 (Leopard), mais pas sur les systèmes antérieurs, qui a utilisé tcsh à la place, qui a une syntaxe différente.

J'espère que ça aide ...

9
avstrallen

J'ai tendance à aller avec /usr/local. Voici une explication intéressante pour laquelle , qui fait référence à norme de hiérarchie du système de fichiers (FHS) .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, qui dit à propos de /usr/local:

Hiérarchie tertiaire pour les données locales, spécifiques à cet hôte. A généralement des sous-répertoires supplémentaires, par exemple, bin, lib, share.⁢

7
John Topley