Je recommande d'utiliser:
#!/bin/bash
Ce n'est pas 100% portable (certains systèmes placent bash
dans un endroit autre que /bin
), mais le fait que beaucoup de scripts existants utilisent des #!/bin/bash
pressions différents systèmes d'exploitation pour faire /bin/bash
au 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 env
commande 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 bash
dans les utilisateurs actuels $PATH
, ce qui pourrait ne pas être une version appropriée du shell bash.
(Mais /usr/bin/env
devrait fonctionner sur n'importe quel système raisonnablement moderne, soit parce qu'il env
est installé, soit parce /usr/bin
que 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
( bash
est /data/data/com.termux/files/usr/bin/bash
) - mais il a une gestion spéciale à prendre en charge #!/bin/bash
.
/usr/local/bin/bash
sur OpenBSD.