Esta primera línea (#!/bin/bash o #!/bin/sh) tiene un nombre. Se conoce como «she-bang» (shabang). Esto se deriva de la concatenación de las fichas sharp ( # ) y bang (!). También se llama sh-bang, hashbang, poundbang o hash-pling. En informática, un she-bang es la secuencia de caracteres que consiste en el signo de número de caracteres y el signo de exclamación (#!) al principio de un guión.
/ bin / bash VS / bin / sh
A menudo hemos visto variedad de encabezado she-bang o script. A menudo nos preguntamos por qué ese guion en particular usa esa escena en particular, por qué no alguna otra. En sistemas operativos tipo Unix, podemos elegir entre varios shells. El shell es responsable no solo de las pequeñas indicaciones, sino también de interpretar los comandos del script. Por lo tanto, la carcasa juega un papel importante, especialmente cuando implementamos lógicas grandes y complejas utilizando condiciones , tuberías, bucles, etc.
/bin / sh es un ejecutable que representa el shell del sistema y generalmente se implementa como un enlace simbólico que apunta al ejecutable para cualquier shell que sea el shell del sistema. El shell del sistema es básicamente el shell predeterminado que debería usar el script. En el último par de años, Debian (y Ubuntu) decidieron cambiar el shell del sistema de bash a dash, un shell similar pero más ligero y mucho más rápido.
Dash es bastante compatible con bash, ya que se basa en el mismo estándar POSIX. Sin embargo, no implementa las extensiones específicas de bash. POSIX standard es una Interfaz de Sistema Operativo Portátil, un intento de estandarizar sistemas operativos tipo UNIX. A pesar de que el shell del sistema de Ubuntu está apuntando a dash, su shell de inicio de sesión como usuario sigue siendo bash en este momento.
/bin / bash es el shell más común utilizado como shell predeterminado para el inicio de sesión de usuario del sistema linux. El nombre del shell es un acrónimo de Bourne-again shell. Bash puede ejecutar la gran mayoría de scripts y, por lo tanto, es ampliamente utilizado porque tiene más características, está bien desarrollado y tiene una mejor sintaxis.
¿QUÉ ES ? – ¿POR QUÉ LO USAMOS?
#!/bin/bash
echo $(date) # Will print the output of date command
touch ~/output.txt
echo "Hey there" > ~/output.txt
Consideremos un script muy simple como el anterior. En cualquier caso más simple, si analizamos un script de shell, no es más que una lista de comandos almacenados en un archivo. Reduce nuestro esfuerzo para ejecutar la misma tarea o comandos una y otra vez. Así que si miramos al principio del script, la primera línea comienza con un hash ( # ) y un signo de exclamación (!). Como ya debes saber, cualquier línea que comience con un hash ( # ), se lee como un comentario. Por lo tanto, cuando ejecutamos el script, la primera línea se lee como un comentario y el intérprete pasa a la segunda línea. Pero la primera línea ya ha hecho su trabajo.
En sistemas operativos tipo Unix cuando un script comienza con un she-bang(#!) se ejecuta como un programa, el cargador de programas analiza el resto de la línea inicial del script como una directiva intérprete. Por lo tanto, el programa intérprete especificado se ejecuta en su lugar, pasándole como argumento la ruta que se utilizó inicialmente a través del script.
Supongamos que cualquier script comienza con la siguiente línea:
#!/bin/sh
a continuación, se le indica al cargador de programas que utilice el programa/bin / sh en lugar de cualquier otro, pasando la ruta del script como primer argumento.
En palabras simples, el golpe en la cabeza del script le dice al sistema que este archivo es un conjunto de comandos que se deben alimentar al intérprete de comandos indicado. Los sistemas operativos tipo Unix tienen una variedad de shells y cada una de las líneas de encabezado de script llama a un intérprete de comandos diferente.
ALGUNOS EJEMPLOS DE she-bang
#!/ bin / sh: Ejecuta el script usando el shell de Bourne o un shell compatible, con path / bin / sh
#!/ bin / bash: Ejecuta el script usando el shell Bash.
#!/bin / csh-f :Ejecuta el script usando el shell de C o un shell compatible.
#!/usr/bin / perl-T :Ejecuta el script usando perl con la opción de comprobación de manchas
#!/usr/bin / env python :Ejecuta el script usando python buscando automáticamente la ruta al intérprete de python desde las variables de entorno
Esperemos que tenga una mejor idea de lo que es she-bang ahora y para qué sirve.