Si je veux que mes scripts utilisent le shell bash, utiliser l'extension .bash appelle bash ou est-ce que cela dépend de la configuration système / de la première ligne de commande? Si les deux étaient en vigueur mais différents, lequel aurait préséance?
Je ne sais pas s'il faut terminer mes scripts avec .sh pour simplement indiquer "script shell", puis #!/usr/bin/env bash
laisser la première ligne sélectionner le shell bash (par exemple ) ou s'il faut simplement les terminer avec .bash (ainsi que le paramètre de ligne 1 ). Je veux que bash soit invoqué.
.bash
extension. De plus, la politique de Debian prévoit que les scripts des paquets qui aboutissent dans l’un desbin
dossiers ne contiennent pas d’extension.Réponses:
Si vous n'utilisez pas explicitement un interpréteur, l'interpréteur appelé est déterminé par l'
shebang
élément utilisé dans le script. Si vous utilisez un interprète spécifiquement, l'interprète se moque de l'extension que vous donnez à votre script. Cependant, l'extension existe pour rendre très évident pour les autres le type de script dont il s'agit.Voir, l'
.py
extension au script bash n'en fait pas un script python.C'est toujours un
bash
script.la source
La dénomination du script n'a rien à voir avec la façon dont il est exécuté.
La ligne shebang définit l'interpréteur utilisé pour exécuter le script.
Personnellement, je ne me soucie pas de savoir si un script est sh, bash, perl, peu importe, alors je le nomme simplement pour ce qu'il fait; Je trouve l'ajout d'une extension redondante. Je ferai
file scriptname
savoir ce qu'est le fichier si je veux le savoir.Donc, si vous voulez que votre script soit exécuté avec
bash
, utilisez#!/bin/bash
comme première ligne.la source
.sh
extension -style signifie qu'il n'est pas nécessaire de le renommer. (Certes, rien n'empêche un programme C de produire un binaire avec une.sh
extension, ce serait simplement déroutant.)#!/usr/bin/env bash
pour la portabilité, discutée ici stackoverflow.com/a/10383546/54964