[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: /bin/bash en archivos ejecutables



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



Reply to: