Utilisez l'extension .sh ou .bash pour les scripts bash?

(Voir Utiliser #! / Bin / sh ou #! / Bin / bash pour la compatibilité Ubuntu-OSX et la facilité d'utilisation & POSIX )

Si je veux que mes scripts utilisent le shell bash, l'utilisation de l'extension .bash appelle-t-elle bash ou dépend-elle de la configuration système / 1ère ligne shebang? Si les deux étaient en vigueur mais différents, ce qui aurait préséance?

Je ne suis pas sûr de mettre fin à mes scripts avec .sh pour indiquer "shell script", puis choisir la première ligne du shell bash (par exemple #!/usr/bin/env bash ). bash (ainsi que le réglage de la ligne 1). Je veux que bash soit invoqué.

est-ce que l'utilisation de l'extension .bash fait appel à bash ou dépend-elle de la configuration du système / 1ère ligne shebang?

Si vous n'utilisez pas explicitement un interpréteur, l'interpréteur invoqué est déterminé par le shebang utilisé dans le script. Si vous utilisez un interpréteur spécifique, l'interprète ne se soucie pas de l'extension que vous donnez à votre script. Cependant, l'extension existe pour rendre très évident pour d'autres ce genre de script.

 [sreeraj@server ~]$ cat ./ext.py #!/bin/bash echo "Hi. I am a bash script" 

Voir, l'extension .py au script bash ne fait pas un script python.

 [sreeraj@server ~]$ python ./ext.py File "./ext.py", line 2 echo "Hi. I am a bash script" ^ SyntaxError: invalid syntax 

C'est toujours un script bash .

 [sreeraj@server ~]$ ./ext.py Hi. I am a bash script 

La désignation du script n'a rien à voir avec son exécution.

La ligne hashbash est ce que l'interpréteur est utilisé pour exécuter le script.

Personnellement, je ne me soucie pas si un script est sh, bash, perl, peu importe ce que je viens de nommer pour ce qu'il fait; Je trouve l'ajout d'une extension redondante. Je vais faire file scriptname pour découvrir ce que le file est si je veux savoir cela.

Donc, si vous voulez que votre script soit exécuté avec bash , utilisez #!/bin/bash comme première ligne.