Où devrais-je stocker les applications en ligne de commande?

46

Lorsque je télécharge des applications en ligne de commande, elles se trouvent dans mon ~/Downloads/répertoire. Mais je pense que ce n'est pas le bon endroit pour avoir une application en ligne de commande localisée. Où dans le système de fichiers Mac OS X dois-je stocker les applications en ligne de commande?

/Applications/aussi se sent mal, c'est plus pour les applications de bureau. Et cela /bin/sonne davantage pour les applications appartenant à OS X.

Jonas
la source
Je partage l’avis de votre opinion selon lequel mettre les choses directement dans / bin ou / Applications est généralement médiocre. La réponse de Patrix est l'emplacement le plus canonique que j'ai vu pour le stockage général en ligne de commande de programmes et de scripts.
bmike
2
Je ne les vois pas comme des doublons, car la question liée semble davantage porter sur la jonglerie entre plusieurs choix de tierces parties et il s’agit plus d’un pur - où vont mes applications téléchargées manuellement.
bmike

Réponses:

44

Comme OS X provient d’un patrimoine Unix, vous souhaiterez stocker les fichiers système /usr/local/binpour les applications et les scripts en ligne de commande appartenant au système localement et non à un utilisateur spécifique. Vous devrez peut-être d'abord créer ce répertoire en lançant:

sudo mkdir -p /usr/local/bin

Vous pouvez déplacer n'importe quelle application de ligne de commande dans ce dossier en exécutant:

sudo mv my-binary /usr/local/bin/

Pour vous assurer que cela /usr/local/binfait partie de votre chemin de recherche standard dans Terminal, vérifiez le contenu de /etc/pathset ajoutez-le si nécessaire:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Certains utilisateurs créent un deuxième répertoire pour les scripts de niveau utilisateur, mais cela dépend encore plus des préférences personnelles.

Je crée généralement un répertoire bin dans chaque dossier utilisateur, puis le cache du Finder - mais vous pouvez choisir vous-même si vous souhaitez le masquer:

 mkdir ~/bin
 chflags hidden ~/bin

Dans ce cas, vous voudrez que le chemin de chaque utilisateur inclue cet emplacement en modifiant les scripts de démarrage du shell ( ~/.bash_profilepour bash, qui est le shell standard)

 export PATH=$PATH:~/bin

ou en codant en dur le chemin d'accès à chaque application lorsque vous l'exécutez.

nohillside
la source
3
C'est absolument la meilleure suggestion et celle que je donnerais à quiconque le demanderait. J'ajouterai seulement 2 choses: 1) /etc/launchd.conf pourrait aussi être un endroit où le chemin doit être ajouté, 2) bien que j'utilise / usr / local / pour les utilitaires Unix installés via homebrewmes propres scripts de shell I avoir un ~ / Dropbox / bin / que j'ai également ajouté à mon $ PATH afin d'avoir tous mes scripts de shell personnalisés sur tous mes Mac. Mais je le fais en plus de / usr / local / bin / not à la place.
TJ Luoma
/ usr / local / bin est l' emplacement UNIX traditionnel des scripts d'un utilisateur, qui donne accès à tout autre utilisateur du système. Placer des scripts à cet endroit placera les scripts dans $ PATH de tous les utilisateurs sans effort. Mais je pense que la façon dont les Mac , étant donné que la plupart des Mac ont un seul utilisateur, consiste à créer un ~/binrépertoire, à le rendre invisible avec chflags uchg ~/bin, et à l'ajouter aux utilisateurs ~/.bash_profilepour qu'il fasse partie des utilisateurs $ PATH. ~/binest un emplacement de choix pour la sécurité et la migration. Sinon, vous devez vous souvenir des éléments que vous avez laissés dans / usr / local / bin. Et ln -s ~/bin ~/Dropbox/c'est aussi sympa.
Chillin
7

Pensez à créer un /optrépertoire, qui est un autre emplacement que le logiciel Unix personnalisé apparaîtrait par convention.

Matt Stephenson
la source
5
/opt/est très utile pour des applications complètes alors que /usr/local/bin/c'est plus approprié pour des scripts en ligne de commande autonomes. Il est souvent préférable de l'utiliser /opt/dans les cas où une collection de scripts apparentés agit comme une bibliothèque (par exemple, /opt/myscriptslib/bin/).
plasmid87
Merci pour vos conseils. J'ai personnellement créé le dossier / opt / pour mettre mon logiciel, puis je viens de faire des liens symboliques vers / usr / local / bin pour tous les exécutables ... sans avoir besoin d'ajouter le / opt / myspecific-soft dans la variable d'environnement path .
Vendredi