Una de las características de los sistemas Unix y de los sistemas operativos tipo GNU/Linux es la gran versatilidad para desarrollar scripts.
Los scripts son programas donde el código es interpretado. El script se escribe en texto plano, permitiendo la edición y mejora simplemente con un procesador de textos. Posteriormente no se necesita pasar por los procesos de compilado y enlazado propios de los programas binarios.
La versatilidad en Linux probablemente derive de la abundancia de lenguajes disponibles para crear estos scripts. Desde los lenguajes propios de la línea de comandos como Bash hasta los más completos y avanzados como Perl, Python o PHP. Si, PHP también permite estos scripts además de su uso habitual en desarrollo web.
Si los scripts son solo archivos de texto donde escribimos nuestro código, ¿como los identifica el sistema para ejecutarlos?, Mediante un par de bytes, que hacen de encabezado, que corresponden a los caracteres #! que lo identifican como script. Estos caracteres es lo que se denomina Shebang. Tras el shebang aparece la ruta donde se localiza el programa interprete que podrá ejecutar el código que contiene el script.
Así por ejemplo para un script bash el shebang es:
#!/bin/bash
A continuación en la siguiente línea aparecerá el código a ejecutar del script.
Ocurre a veces que el programa que interpreta el script no esta en la misma localización en diferentes sistemas. Para hacer localizable el script se usa en el Shebang la herramienta “env“. La aplicación “env” se encargará de localizar el interprete de nuestro programa y lo ejecutará con él. Suele estar en /usr/bin por lo que el shebang de un script php usando “env” puede ser así:
#!/usr/bin/env php
A los scripts se les puede pasar argumentos. De modo que estos sean usados por el script en su ejecución. A veces esto requiere usar alguna opción propia del interprete.
Este encabezado propio de los scripts en Linux además por el nombre de Shebang es también conocido por los nombres de sharpbang y hash-bang.
Por último apuntar que para que los scripts puedan ser ejecutados deben llevar el atributo de ejecutable, que puede activarse con la siguiente comando:
chmod +x script
Como probablemente el script no este en la ruta del sistema, para iniciar su ejecución deberemos añadirla al usar el interprete propio del terminal. La forma más cómoda es indicándole el directorio actual. Esto se hace así:
./script
Los scripts generalmente no tienen que llevar un nombre de extensión propio del lenguaje para poder ser ejecutados. Sin embargo es muy recomendable usarla para identificarlos mejor.