J'ai des scripts fonctionnels et je veux les copier dans /usr/bin
Je veux les utiliser comme commandes de terminal normales. Est-ce une bonne pratique de les utiliser avec l'extension .sh
ou puis-je les enregistrer sans extension?
Non, ce n'est pas une bonne pratique, vous devez conserver vos scripts sans extension. Notez que les scripts faisant partie de packages n'ont pas d'extension .sh , c'est-à-dire update-grub , pas update-grub.sh . Si vous n'êtes toujours pas convaincu, alors soyez avisé que Guide des styles de shell Google indique:
Les exécutables ne doivent avoir aucune extension (fortement préférée) ou une extension .sh. Les bibliothèques doivent avoir une extension .sh et ne doivent pas être exécutables.
PS Vous n'avez pas besoin de mettre votre script dans /bin
. Vous pouvez créer le répertoire ~/bin
et y placer votre script. Le répertoire ~/bin
est inclus dans $PATH
par défaut, donc les scripts peuvent être exécutés comme toute autre commande shell.
J'appuie la recommandation d'utiliser ~/bin
qui est automatiquement ajouté à votre $PATH
, comme l'a déclaré Sergey . Ou /usr/local/bin
, qui peut déjà être sur le PATH
.
Cependant:
Les extensions sont rares dans /usr/bin
. Dans mon système, je ne peux en trouver que deux:
$ dpkg -S 'ls /usr/bin/*.sh'
mtools: /usr/bin/amuFormat.sh
gettext-base: /usr/bin/gettext.sh
Donc, si vous empaquetez, oubliez définitivement l’extension.
Il suffit de mettre la ligne suivante en haut du fichier:
#!/bin/bash
Ce fichier sera automatiquement saisi: Script de shell sans aucune extension!
N'oubliez pas de donner l'autorisation d'exécution du fichier.
Pour installer un script qui peut être exécuté directement par commande, consultez la page Où dois-je mettre mon script pour pouvoir l'exécuter par un commande directe?
Lire d'autres questions sur les étiquettes scripts