Je recommande d'utiliser:
#!/bin/bash
Ce n'est pas 100% portable (certains systèmes placent bashdans un endroit autre que /bin), mais le fait que beaucoup de scripts existants utilisent des #!/bin/bashpressions différents systèmes d'exploitation pour faire /bin/bashau moins un lien symbolique vers l'emplacement principal.
L'alternative de:
#!/usr/bin/env bash
a été suggéré - mais il n'y a aucune garantie que la envcommande se trouve /usr/bin(et j'ai utilisé des systèmes là où elle ne l'est pas). De plus, ce formulaire utilisera la première instance de bashdans les utilisateurs actuels $PATH, ce qui pourrait ne pas être une version appropriée du shell bash.
(Mais /usr/bin/envdevrait fonctionner sur n'importe quel système raisonnablement moderne, soit parce qu'il envest installé, soit parce /usr/binque le système fait quelque chose pour le faire fonctionner. Le système auquel j'ai fait référence ci-dessus était SunOS 4, que je n'ai probablement pas utilisé depuis environ 25 ans.)
Si vous avez besoin d'un script pour s'exécuter sur un système qui n'en a pas /bin/bash, vous pouvez modifier le script pour pointer vers l'emplacement correct (ce qui est certes gênant).
J'ai discuté des compromis plus en profondeur dans ma réponse à cette question .
Une mise à jour quelque peu obscure: un système que j'utilise, Termux , une couche de type Linux de bureau qui fonctionne sous Android, n'a pas /bin/bash( bashest /data/data/com.termux/files/usr/bin/bash) - mais il a une gestion spéciale à prendre en charge #!/bin/bash.
/usr/local/bin/bashsur OpenBSD.