Si j'ai un script ou des programmes Shell personnalisés, que j'ai créés moi-même ou téléchargés à partir du Web, et que je veux pouvoir l'exécuter à partir de la CLI, y a-t-il l'emplacement standard pour le mettre dans la structure de répertoires Linux/Unix?
/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?
Je le mets généralement dans mon dossier ~/bin et le mets dans PATH, mais il ne semble pas propre. Et chaque fois que je télécharge un nouveau programme, je dois le mettre à nouveau dans le PATH.
/usr/local/bin
existe précisément à cet effet, pour une installation à l'échelle du système. Pour votre usage privé, ~/bin
est la norme de facto.
Si vous souhaitez conserver chaque binaire dans son propre sous-répertoire, vous pouvez le faire et ajouter un lien symbolique vers un répertoire déjà dans votre PATH
. Ainsi, par exemple
curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/
à condition de $HOME/bin
est dans votre PATH
. (Il existe des outils comme stow
qui font cela - et bien plus encore - dans les coulisses pour vous.)
Cela peut varier légèrement en fonction de la saveur Unix. Je suppose que Linux ici (bien que cela puisse s'appliquer à OSX). Selon le Filesystem Hierarchy Standard (FHS) (lien obtenu auprès du Linux Standard Base working group ):
Le
/usr/local
la hiérarchie doit être utilisée par l'administrateur système lors de l'installation locale du logiciel. Il doit être protégé contre l'écrasement lors de la mise à jour du logiciel système. Il peut être utilisé pour des programmes et des données qui peuvent être partagés entre un groupe d'hôtes, mais qui ne se trouvent pas dans/usr
.Les logiciels installés localement doivent être placés dans
/usr/local
plutôt que/usr
sauf s'il est installé pour remplacer ou mettre à niveau le logiciel dans/usr
.
/usr/local/bin
est souvent sur le chemin par défaut.
Notez que vous ne devez mettre l'exécutable ou un lien vers celui-ci que dans /usr/local/bin
, le reste devra peut-être aller dans /usr/local/lib
ou /usr/local/share
.
Le /opt
l'arborescence peut également être judicieuse:
/opt
est réservé à l'installation de progiciels d'application complémentaires.Un package à installer dans/opt doit localiser ses fichiers statiques dans un
/opt/<package>
ou/opt/<provider>
arborescence de répertoires, où<package>
est un nom qui décrit le progiciel et<provider>
est le nom enregistré LANANA du fournisseur.[...]
Les répertoires/opt/bin,/opt/doc,/opt/include,/opt/info,/opt/lib et/opt/man sont réservés à l'administrateur système local. Les packages peuvent fournir des fichiers "frontaux" destinés à être placés (par liaison ou copie) dans ces répertoires réservés par l'administrateur système local, mais doivent fonctionner normalement en l'absence de ces répertoires réservés.
(Vous pouvez créer votre propre lien à partir de /opt/your-package/bin/executable
en /opt/bin
, et met /opt/bin
sur le PATH
s'il n'est pas déjà là.)