J'ai quelques scripts fonctionnels et je veux les copier sur /usr/bin
Je veux les utiliser comme des commandes de terminal normales. Est-ce une bonne pratique de les utiliser avec la commande .sh
ou puis-je les enregistrer sans extension ?
Réponses
Trop de publicités?Non, ce n'est pas une bonne pratique, vous devez garder vos scripts sans extension. Notez, que scripts faisant partie de paquets n'a pas d'extension. .sh l'extension, c'est-à-dire update-Grub pas update-Grub.sh . Si vous n'êtes toujours pas convaincu, sachez que Guide de style de Google Shell. dice:
Les exécutables ne doivent pas avoir d'extension (fortement recommandé). ou une extension .sh. Les bibliothèques doivent avoir une extension .sh et ne doivent pas être exécutables.
PS Il n'est pas nécessaire de mettre votre script en /bin
. Vous pouvez créer un répertoire ~/bin
et mettez-y votre script. Répertoire ~/bin
est inclus dans $PATH
par défaut, donc les scripts mis là peuvent être exécutés comme n'importe quelle autre commande scripts.
J'appuie la recommandation d'utiliser ~/bin
qui est automatiquement ajouté à votre $PATH
,comme Sergey dit. Ou /usr/local/bin
qui peut déjà se trouver sur le PATH
. Cependant :
- Vous le faites pour vous-même. Utilisez ce avec quoi vous vous sentez à l'aise. En effet, je dirais de garder l'extension pour qu'on vous rappelle que c'est votre script que vous exécutez, puisque -
-
Les extensions sont peu fréquentes dans
/usr/bin
. Dans mon système, je n'en trouve que deux :$ dpkg -S `ls /usr/bin/*.sh` mtools: /usr/bin/amuFormat.sh gettext-base: /usr/bin/gettext.sh
Donc, si vous emballez, laissez définitivement de côté l'extension.
Il suffit de mettre la ligne suivante en haut du fichier :
#!/bin/bash
Ce fichier sera donc automatiquement de type : Shell Shell sans aucune extension !
N'oubliez pas de donner à l'exécution la permission de classer.
Pour mettre script afin qu'il puisse être exécuté par commande directe, visitez : Où dois-je mettre mon script pour pouvoir l'exécuter par une commande directe ?