web-dev-qa-db-fra.com

Où conservez-vous vos propres scripts sur OSX?

Alors que j'écris mes scripts bash pour mon OS X qui font des choses générales, je me demande où est un bon endroit pour les garder. Existe-t-il un répertoire dans lequel je peux les mettre tous où ils seront récupérés automatiquement? Ou dois-je créer mon propre répertoire, puis référencer ce répertoire à partir de .profile ou quelque chose?

57
More Than Five

J'ai mon PATH défini comme:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
  • $HOME/bin

J'utilise /usr/local/bin pour les commandes que j'ai override les commandes par défaut. Par exemple, j'ai installé Subversion 1.7.7 et OS X est livré avec 1.6.18. La version 1.7.7 de svn est dans /usr/local/bin alors que la version 1.6.18 par défaut de svn est dans /usr/bin. Lorsque je tape svn, j'obtiens la version que j'ai installée au lieu de la version fournie avec OS X. Je l'ai fait avec Java, Git, Python et plusieurs autres fichiers binaires où j'ai besoin d'une version différente de ce que est venu sur mon Mac. La plupart d'entre eux sont des liens symboliques. Par exemple:

$ ls -l /usr/local/bin/ant
lrwxr-xr-x  1 root  wheel       16 Jun 12 11:01 ant -> /opt/ant/bin/ant

Ant 1.9.1 est installé dans /opt/ant (réellement, /opt/Apache-ant-1.9.1, mais il est symboliquement lié à /opt/ant). J'ai lié toutes les choses sous /opt/ant/bin à /usr/local/bin, donc c'est sur mon chemin.

J'utilise $HOME/bin pour mes scripts Shell personnels et d'autres scripts. Traditionnellement, vous en faites la dernière entrée de votre PATH, donc vous ne remplacez pas accidentellement une commande intégrée. Si je faisais une commande de script Shell appelée cp, je ne remplacerais pas le /bin/cp commande.

17
David W.

J'utilise ~/bin pour les exécutables et les scripts, je me suis écrit et /usr/local/bin pour les exécutables et les scripts que je n'ai pas écrits moi-même.

/usr/local/bin est utilisé par Homebrew, pip (et gem et npm installé par Homebrew), comme cible par défaut pour make install, et par certains .pkg installateurs.

J'avais auparavant un répertoire séparé pour les exécutables et les scripts que je n'avais pas écrit moi-même et qui n'étaient pas placés dans /usr/local/bin par défaut. Mais il contenait si peu de fichiers que j'ai déplacé tous les fichiers vers /usr/local/bin.

Je peux trouver les trucs non Homebrew dans /usr/local/bin avec find /usr/local/bin ! -lname '../Cellar/*'.

Je n'utilise pas /usr/local/bin pour les scripts que j'ai écrits moi-même, car /usr/local/bin contient déjà environ 1 000 autres fichiers et ~/bin (ou bin) est souvent plus facile à taper.

J'ai ajouté setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin à /etc/launchd.conf. Ayant /usr/local/bin avant que les autres répertoires soient potentiellement dangereux, et par exemple certaines commandes TextMate ont cessé de fonctionner à cause de cela, mais il est également pratique d'avoir des versions plus récentes des commandes avant les versions installées par le système et d'utiliser le même chemin partout.

9
Lri