web-dev-qa-db-fra.com

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

J'ai quelques scripts fonctionnels et je veux copier à /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 sauvegarder sans extension?

65
Patterson

Non, ce n'est pas une bonne pratique, vous devriez garder vos scripts sans extension. Notez que les scripts faisant partie de paquets n’ont pas d’extension . Sh , c’est-à-dire update-grub , pas update-grub.sh. Si vous n'êtes toujours pas convaincu, sachez que Guide de style de Google Shell dit:

Les exécutables ne doivent avoir aucune extension (fortement recommandé) ou une extension .sh. Les bibliothèques doivent avoir une extension .sh et ne doivent pas être exécutables.

PS Vous n'êtes pas obligé 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 par défaut dans $PATH. Par conséquent, les scripts qui y sont placés peuvent être exécutés comme toute autre commande Shell.

70
user280493

J'appuie la recommandation d'utiliser ~/bin qui est automatiquement ajouté à votre $PATH, comme Sergey , a déclaré. Ou /usr/local/bin, qui peut déjà être sur le PATH. Toutefois:

  • Vous faites cela pour vous-même. Utilisez ce que vous sentez à l'aise. En effet, je dirais de garder l’extension pour vous rappeler que c’est votre script que vous exécutez, car -
  • 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 emballez, laissez définitivement de côté l'extension.

9
muru

Il suffit de mettre la ligne suivante en haut du fichier:

#!/bin/bash

Donc, ce fichier sera automatiquement tapé: Script Shell sans aucune extension!

N'oubliez pas de donner l'autorisation d'exécution pour le fichier.

Pour mettre le script de manière à pouvoir être exécuté par commande directe, visitez: Où devrais-je placer mon script afin de pouvoir l'exécuter par une commande directe?

5
Pandya