Scriptez portable !

Vous avez fait un script pratique que vous partagez avec la communauté mais que ce soit en python, en shell, en perl ou je ne sais quoi encore, sachez que les shebang sous ces formes ne sont pas portables :

#!/bin/bash
#!/bin/zsh
#!/usr/bin/perl
#!/usr/bin/python

En effet, même si ces binaires sont à cet emplacement chez vous, il est possible qu’ils ne le soient pas chez les autres, par exemple les logiciels installées par compilation depuis les ports FreeBSD placent souvent leurs binaires dans /usr/local/bin, il en est de même quand vous faites un ./configure && make && make install. Ainsi si on lance un script mal codé :

./script.sh: bad interpreter: /bin/zsh: no such file or directory

Hum, bon vous me direz, ce n’est pas grave, il suffit de changer la première ligne du script. Mais imaginez un peu le travail à fournir si vous deviez changer cette première ligne sur tous vos script… La meilleure manière de procéder est d’utiliser un shebang portable , et on peut le faire avec la commande env. Exemples de shebang portables :

#!/usr/bin/env bash
#!/usr/bin/env python

env ira chercher le programme là ou il est et l’exécutera. Bon, vous me direz, le problème est le même puisqu’il faut que env soit au même endroit pour tout le monde, ben figurez vous que c’est le cas !! Donc le problème est réglé, et vous pouvez poster votre script sur #freebsd-fr@irc.freenode.org sans vous faire insulter (poil au nez).