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

Re: Perl en linux



Antonio Luque wrote:
> ... ya que dichos script me los ejecuta, pero sólo
> en el directorio donde está el Perl, es decir que si dichos script los
> ejecuto en /usr/bin me funcionan de perlas pero si me creo una carpeta y
> los guardo ahí sólo me funcionan, gracias a algunos de vosotros
> (Grzegorz...), poniendo ./script. Debe ser por lo que algunos me habeis
> apuntado del PATH. Supongo que debe ser la línea del fichero
> ".bash_profile", pero ahí si que tengo puesta la ruta donde esta el perl.
> Creo que no tengo claro algo ¿que es?.

Bueno bueno bueno bueno...
Creo que tienes un poco liado "el concepto" ;-)

A ver, voy a dar unas explicaciones desde mi punto de vista. Es
_MUY_ posible que esté equivocado, asi que los expertos, estad
atentos.

Bien, si tu creas un script normal, con órdenes del sistema, como cd,
mkdir, rm, etc, el sistema lo ejecuta directamente. Si está escrito en Perl,
necesita un intérprete que le diga al sistema operativo lo que significa
tal o cual comando.

Para indicarle esto al sistema operativo, al principio de todos los scripts
perl está la línea que indica al sistema operativo el intérprete que debe
usar para "entender" los comandos. Esto suele ser #!usr/bin/perl

La confusión que tienes es que el PATH es una variable que le indica al
sistema operativo los directorios en los que tiene que mirar cuando el
usuario quiere ejecutar un programa. Esta suele estar indicada en el
fichero ya mencionado .bash_profile.

El caso es que Linux nunca mira en el directorio en el que estás
actualmente para ejecutar el comando a no ser que se lo digas
explícitamente.

Supongamos que tienes el siguiente path:

/usr/bin;/usr/pepe;/usr/nacle

y en el directorio bin tienes el intérprete perl, y tanto en /usr/pepe como
en /usr/pepe/prueba tienes dos scripts exáctamente iguales en perl.

Si vas al directorio /usr/pepe y tecleas el nombre del script, se
ejecutará porque el directorio actual casualmente está en el PATH, pero
su vas a /usr/pepe/prueba y tecleas el nombre a secas no funcionará.
Tienes que indicarle con ./nombrescript que mire en el directorio actual
al buscar ficheros ejecutables.

Otra forma sería que dentro de /usr/pepe/prueba tecleases

perl nombrescript

Entonces, el sistema operativo buscaría el programa perl, que está en el
PATH, y le diría que ejecutase el fichero nombrescript del directorio en
el que se hace la petición de ejecución.

En resumen: cuando un fichero está en un directorio que no es el path,
siempre hay que hacer ./nombrefichero. Esto vale tanto para scripts
como para otros ficheros ejecutables. Esto lo aviso, porque es muy
frustrante ir al directorio /usr/games, teclear el nombre de un juego y
que no funcione porque se te olvidó poner el ./ delante :-)

Grzegorz Adam Hankiewicz - gradha@iname.com - http://web.jet.es/gregorio/
Gogosoftware - http://welcome.to/gogosoftware/


Reply to: