77 votes

Dois-je enregistrer mes scripts avec l'extension .sh ?

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 ?

83voto

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.

10voto

muru Points 180007

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.

6voto

Pandya Points 32443

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 ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X