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