J'ai six répertoires avec des fichiers de commande. Il s'agit de /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
et /usr/local/sbin
.
Quelles sont les différences entre ceux-ci? Si j'écris mes propres scripts, où devrais-je les ajouter?
En relation:
Veuillez vous référer à FilesSystem Hierarchy Standard (FHS) pour Linux pour cela.
/bin
: pour les fichiers binaires utilisables avant que la partition /usr
ne soit montée. Cette option est utilisée pour les fichiers binaires triviaux utilisés au tout début du démarrage ou ceux dont vous avez besoin pour le démarrage en mode mono-utilisateur. Pensez aux fichiers binaires tels que cat
, ls
, etc.
/sbin
: idem, mais pour les fichiers binaires avec les privilèges de superutilisateur (root) requis .
/usr/bin
: Identique au premier, mais pour binaires généraux du système .
/usr/sbin
: Comme ci-dessus, mais pour les fichiers binaires avec les privilèges superutilisateur (root) requis.
si j'écris mes propres scripts, où devrais-je les ajouter?
Aucune de ces réponses. Vous devez utiliser /usr/local/bin
ou /usr/local/sbin
pour les scripts disponibles à l'échelle du système. Le chemin local
signifie qu'il n'est pas géré par les paquets système (il s'agit d'une erreur ne erreur pour les paquets Debian/Ubuntu).
Pour les scripts définis par l'utilisateur , utilisez ~/bin
(un dossier bin personnel de votre répertoire personnel).
La FHS dit pour /usr/local
:
Hiérarchie tertiaire pour les données locales, spécifique à cet hôte . A généralement des sous-répertoires supplémentaires, par exemple,
bin/
,lib/
,share/
.
J'avais moi-même une question similaire il y a un an +: Le meilleur répertoire pour placer mes scripts bash?
man hier
(hierarchy) répertorie tous les répertoires. Pour obtenir ceux réservés aux fichiers binaires, utilisez:
$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2
/bin This directory contains executable programs which are needed in single user
mode and to bring the system up or repair it.
--
/sbin Like /bin, this directory holds commands needed to boot the system, but
which are usually not executed by normal users.
--
/usr/X11R6/bin
Binaries which belong to the X-Window system; often, there is a symbolic
link from the more traditional /usr/bin/X11 to here.
--
/usr/bin
This is the primary directory for executable programs. Most programs exe‐
cuted by normal users which are not needed for booting or for repairing the
--
/usr/local/bin
Binaries for programs local to the site.
--
/usr/local/sbin
Locally installed programs for system administration.
--
/usr/sbin
This directory contains program binaries for system administration which
are not essential for the boot process, for mounting /usr, or for system
Pour que tous les utilisateurs puissent accéder à vos scripts, vous pouvez les mettre dans /usr/local/bin
. Gardez à l'esprit que vous avez besoin de Sudo
access pour ajouter/modifier des fichiers ici. Voir: Existe-t-il un emplacement standard pour placer des scripts Linux personnalisés?
Pour vos propres scripts d’identification d’utilisateur, mettez-les dans /home/YOUR_NAME/bin
. N'oubliez pas que vous devez d'abord créer ce répertoire, puis relancer le terminal pour que le chemin d'accès soit automatiquement configuré par ~/.profile
. Voir: Comment ajouter/home/nom d'utilisateur/bin à $ PATH?
J'envisage de prendre certains de mes scripts bash plus complexes dans Demandez à Ubuntu et de les configurer avec des scripts d'installation sur github
. Voici quelques exemples:
Je pense que les scripts doivent être installés dans /usr/bin
qui se trouve dans $ PATH, mais je ne suis pas encore sûr de l'endroit approprié.