El Mié 14 Jun 2006 01:25, Luis Rodrigo Gallardo Cruz escribió: > On Wed, Jun 14, 2006 at 03:29:43AM +0000, Andrés M. wrote: > > Alguien sabe la diferencia entre poner o no al comienzo de un script en > > bash: > > #!/bin/bash ????? > > > > Me dijeron que tiene que ver con cómo lo interpreta el kernel, pero la > > verdad es que no lo encontré en ningún lado. > > Cuando tratas de ejecutar un archivo el kernel hace lo que sigue[1]: > > - Verificar, por supuesto, que tengas permiso de ejecución :-) > - Lee el principio del archivo. Según esos primeros bytes, decide que > el archivo es de un cierto tipo y lo ejecuta con las rutinas para ese > tipo. En particular, si los primeros dos bytes son #! usa el resto de > la linea como el nombre del interprete para dicho archivo y ejecuta > *eso* con el nombre del archivo como primer argumento > - Si ninguno de los 'filtros' registrados en el kernel identifica el > archivo, lo ejecuta con /bin/sh (que en un Debian normal es un vínculo > a /bin/bash) > > Entonces: > > Si tu archivo se llama /home/yo/mi-script > > - Si es un binario, el kernel lo ejecuta directamente > > - Si empieza con #!/usr/bin/mi-super-lenguaje, el kernel ejecuta > /usr/bin/mi-super-lenguaje /home/yo/mi-script > > (Caso particular. Si empieza con #!/usr/bin/mi-super-lenguaje --opcion > se ejectuta > #!/usr/bin/mi-super-lenguaje --opcion /home/yo/mi-script > ) > > - En otro caso, se ejecuta > /bin/sh /home/yo/mi-script > > ¿Qué diferencia hace, te preguntas, si en mi bonito Debian /bin/sh es > un vínculo a /bin/bash? > > 1. Si pones el #!/bin/bash te aseguras de que se ejecute con bash aún > en sistemas dónde el administrador ha decidido cambiar /bin/sh a > apuntar a /bin/ksh, por ejemplo. > > 2. Si bash es llamado con el nombre 'sh' su comportamiento cambia y > prende las opciones de compatibilidad POSIX. O sea que si tu script > depende de caracteristicas especiales de bash no va a funcionar. > > 3. Si te acostumbras a poner la linea mágica te ries más cuando ves > a Gunnar (o a tu hacker de cabecera local) con una camiseta que dice > > hash > bang > slash > bin > slash > bash > > :D > > [1] Ruego encarecidamente a los gurus locales perdonen la > simplificación de tantos y tan bonitos detalles sutiles.
Que fabulosa repuesta....nada de eguismo....da gusto realmente......Felicitaciones....!!! Saludos Carlos

