Où gardez-vous vos propres scripts sur OSX?
Que j'écris mes scripts bash pour mes OS X qui n'en général les choses, je me demande où est un bon endroit pour les garder. Est-il un répertoire, je peux les mettre tous dans où ils seront repris automatiquement? Ou devrais-je créer mon propre répertoire et faire référence à ce répertoire .profil ou quelque chose?
Vous devez vous connecter pour publier un commentaire.
Généralement
/usr/local/bin
, à moins que vous ne voulez pas que les autres utilisateurs aient accès, dans ce cas$HOME/bin
./usr/local/bin
peut-être dans le CHEMIN d'accès par défaut, mais$HOME/bin
aurez certainement besoin de les ajouter au CHEMIN.Ajoutant
$HOME/bin
de CHEMIN:usr/local
et il a bien fonctionné, mais dès que je l'ai déplacé vers un autre dossier de la mine (et ajouté le chemin d'accès à ce dossier à$PATH
) Xcode n'ai pas à le trouver (en d'autres termes, il n'était plus trouvé par les programmes qui l'utilisent). J'ai peut-être fait quelque chose de mal lors de l'ajout du chemin d'accès/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:/Users/dani/Documents/repos/dotfiles/bin
donc, si quelque chose est en/Users/dani/Documents/repos/dotfiles/bin
, ça va être trouvés automatiquement? Juste pour éviter XY, mon but est d'avoir tous les scripts deusr/local/bin
et~/bin
, dans un dossier différent. (sbin des trucs aussi). Cela fait-il sens?J'ai mon CHEMIN défini comme:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
$HOME/bin
- Je utiliser
/usr/local/bin
pour les commandes que j'ai que remplacer les commandes par défaut. Par exemple, j'ai Subversion 1.7.7 installé, et l'OS X est livré avec 1.6.18. La version 1.7.7 desvn
est dans/usr/local/bin
alors que la valeur par défaut 1.6.18 version desvn
est dans/usr/bin
. Quand je tapesvn
, je reçois la version que j'ai installé à la place de la version qui vient 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 que ce qui est venu sur mon Mac. La plupart de ces sont des liens symboliques. Par exemple:Ant 1.9.1 est installé dans
/opt/ant
(en fait,/opt/apache-ant-1.9.1
, mais c'est symboliquement lié à/opt/ant
). J'ai relié tous les trucs sous/opt/ant/bin
à/usr/local/bin
, il est dans mon chemin.- Je utiliser
$HOME/bin
pour mon usage personnel des scripts shell et d'autres scripts. Traditionnellement, vous faites la dernière entrée dans votre CHEMIN, vous n'avez pas accidentellement remplacer une commande interne. Si j'ai fait un script shell de commande appelécp
, je ne voudrais pas remplacer la/bin/cp
commande.$HOME/bin
à l'avant de mon chemin afin que je puisse remplacer le système de choix (et j'ai compliquer mon chemin par le fait d'avoir plusieurs versions de Perl et de la GCC disponibles dans des répertoires distincts, et à défaut à la version la plus récente — ceux qui apparaissent après $HOME/bin), mais sinon, je pars avec un système semblable à cela./opt
, puis lien. Par exemple, j'ai/opt/apache-ant-1.9.1
,/opt/apache-ant-1.8.1
,/opt/apache-ant-1.7.1
celui que je veux utiliser, je lien vers/opt/ant
. Alors, je vais le lien binaires sous/opt/ant/bin
à/usr/local/bin
. Pour passer des versions, j'ai simplement changer le lien sous/opt
$HOME/bin
à la fin de votre chemin pour des raisons de sécurité. C'était à l'époque où tout le monde était sur la même zone d'Unix. Il n'a probablement pas s'appliquer beaucoup plus. J'utilise$HOME/bin
principalement pour les scripts shell, et d'autres scripts. Les binaires sont installés ailleurs et lié à/usr/local/bin
/usr/local/bin
, par exemple. Dans un précédent travail, j'ai eu à ignorer/usr/local/bin
(pas sur un Mac, en soi) parce qu'il était "maintenu" par SIG, a été monté par NFS en lecture seule, et comportaient généralement le cas (comme dans "obsolète") programmes — pouvez-vous dire de Perl 5.004?$HOME
(ou~
) ne fonctionne pas dans/etc/paths
. Il doit être dit là — par exemple,/Users/Rax
.- Je utiliser
~/bin
pour les exécutables et les scripts que j'ai écrit moi-même et/usr/local/bin
pour les exécutables et les scripts, je n'ai pas écrit moi-même./usr/local/bin
est utilisé par Homebrew,pip
(etgem
etnpm
installé par Homebrew), que la cible par défaut pourmake install
, et par certains.pkg
installateurs.J'ai utilisé un répertoire distinct pour les exécutables et les scripts, je n'ai pas écrit moi-même et qui n'étaient pas placés dans
/usr/local/bin
par défaut. Mais elle contenait donc quelques fichiers que j'ai déplacé tous les fichiers à/usr/local/bin
.Je peux trouver de la non-Homebrew trucs dans
/usr/local/bin
avecfind /usr/local/bin ! -lname '../Cellar/*'
.Je n'utilise pas
/usr/local/bin
pour les scripts que j'ai écrit moi-même, parce que/usr/local/bin
contient déjà environ 1000 autres fichiers, et~/bin
(oubin
) 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 les autres répertoires est potentiellement dangereux, et par exemple, certains TextMate commandes cessé de travailler à cause de cela, mais il est aussi pratique d'avoir des versions plus récentes de commandes avant que le système installé des versions et à utiliser le même chemin partout.Dans mon esprit, vous pouvez placer vos scripts où vous voulez. Il ne marche pas vraiment les questions sauf si vous avez utilisé le système de specefic dossiers. Je garde le mien dans /scr à la racine uniquement les autorisations sur ce dossier. C'est conviniant parce que tout le script dans ce dossier a besoin d'un accès root pour effectuer correctement et je ne veux pas que les utilisateurs finaux à lire dans ce dossier.