[caracas-pm] Problemas con ejecución de bash dentro de scripts perl

"Ricardo C. Fernández de C." l-koshrf at fercusoft.com
Fri May 25 14:16:13 PDT 2007


Luis Muñoz wrote:
> On May 24, 2007, at 9:38 PM, Ricardo C. Fernández de C. wrote:
>   
>> Y que hago con los llamados "puntos" me dan un cupón para que? :-P
>>     
>
> Para "Whose Line is it Anyway?"
>
>   
>> [...] el cambio no es persistente por que la ejecución es "atómica"
>> solo se llamó, se ejecutó y luego volvio a su punto de inicio [...]
>>     
>
>
>   
>> [...] (aunque revisando ahora el punto de
>> partida es el $PWD del entorno al momento de invocarse lo triste del
>> caso es que no puedes hacer un export PWD=/dir parece no afectarlo...
>> tendría que leer mas a fondo system().... cuando terminé con PL/ 
>> SQL... y
>> cuando le encuentre alguna útilidad a system() ).
>>     
>
> De alguna manera, esta respuesta está cerca de lo correcto, aunque la  
> cosa no va exactamente por ahí.
>
> * En *nix los "procesos" tienen un conjunto de propiedades que forman  
> parte de su estado. Una de esas propiedades, es la noción de  
> "directorio actual"
>
> * system(), en un sistema *nix, comienza por ejecutar una llamada fork 
> () - Esta llamada crea una copia del proceso actual, heredando todas  
> las propiedades
>
> Para no entrar en detalles de carpintería, es ese proceso nuevo (el  
> que salió del fork() - lo llamaré hijo por naturalidad), es el que  
> ejecuta el comando cd (de hecho, ejecuta un shell, que ejecuta el  
> comando cd). Es el proceso hijo el que cambió su directorio actual  
> con cd. Cuando termina, muere. El proceso padre continúa con el mismo  
> estado - Nunca cambió de directorio...
>
> Posíblemente la respuesta para el amigo que necesitaba cambiar de  
> directorio hubiera sido chdir(), un builtin de Perl que hace lo mismo  
> que cd, pero en el proceso actual :-)
>
> perldoc -f chdir
>
> Por cierto, escribir en $PWD no cambia el directorio, porque es el  
> shell quien mantiene esta variable; Cada vez que cambias de  
> directorio, el shell actualiza su valor. Sería una mejora a la  
> ortogonalidad que uno pudiera cambiarse de directorio escribiendo  
> allí. Quedará para la siguiente versión de bash :-)
>
> (Fans de Linux abstenerse de decir como echo "/foo" > /proc/$WHATEVER  
> ya lo hace... Esta es una lista de Perl :-)
> (Fans de Debian abstenerse de contarnos como es más fácil allí que en  
> Fedora :-)
>
> Saludos
>
> -lem
>
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm
>   

Estos BSDeros poco creyentes de la verdadera luz!!!!
koshrf at koshrf-laptop-acer:~$ export PWD=/boot
koshrf at koshrf-laptop-acer:/boot$
koshrf at koshrf-laptop-acer:/boot$ export PWD=/lib/iptables
koshrf at koshrf-laptop-acer:/lib/iptables$


Funciona a las mil maravillas en Linux :-) (Debian of course).

P.D: en realidad no funciona por que solo cambia la variable de entorno 
pero no cambia el directorio, pero no me pude aguantar el evangelizar a 
un BSDero.


More information about the caracas-pm mailing list