Quelle est la bonne façon de rendre un script bash portable entre Linux et FreeBSD?

Je travaille sur des scripts bash que je voudrais travailler avec mes systèmes Linux et FreeBSD.

Comme je travaille principalement sous Linux, je suis habitué à lancer mes scripts bash avec

#!/bin/bash 

Mais cela ne fonctionne pas avec FreeBSD puisque bash réside dans /usr/local/bin/bash . Donc, sur FreeBSD, mes scripts doivent commencer par

 #!/usr/local/bin/bash 

Alors, y a-t-il autre chose que je pourrais utiliser qui soit portable sur les deux systèmes? Je préfère ne pas conserver deux versions des scripts.

 #!/usr/bin/env bash 

devrait faire l’affaire, à condition que bash soit sur le chemin quelque part. Voir ici pour plus de détails.

Honnêtement, si vous voulez la portabilité, appelez comme / bin / sh et codez pour POSIX. C’est moins joli, mais vous rencontrerez moins de problèmes potentiels si vous le faites.

Utilisez #!/bin/sh sur les deux systèmes si vous voulez être portable et éviter les bourdonnements.