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.
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?
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?
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.
/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 ...
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.