On Fri, 25 Aug 2000, Ignacio García Fernández wrote:

> Tengo un script para cambiar la variable DISPLAY que dice así:
> 
> #! /usr/bin/sh
> export DISPLAY=maquina.remota.es
> 
> El caso es que lo ejecuto y no pasa absolutamente nada.
> 
> Tampoco ocurre nada si le digo
> 
> $ sh ./script
> 
> Alguien puede echarme una mano?

        Esa me la sé. Si lo ejecutas con el nombre del script
('./script') o especificando un shell ('sh ./script') (ambas cosas son
equivalentes) la asignación de la variable DISPLAY y la 'exportación' de
dicha variable se realizan en el entorno del shell creado para ejecutar el
script. Cuando termina el script, ese shell acaba y su entorno se
pierde. Sus hijos (si hubiera tenido alguno) habrían heredado las
variables 'exportadas'. Pero el shell desde el que hemos ejecutado el
script es _su_padre_ y, claro, no hereda nada. Todo se ha perdido.

        Lo que queremos en este caso es que las instrucciones contenidas
en ese script se ejecuten _en_nuestro_shell_ y que no se cree un hijo para
ejecutarlas. Lo que necesitamos es el comando 'source' o su equivalente
'.'. Son comandos internos del shell y hacen justo lo que queremos. Así
que yo creo que si ejecutas

                source ./script         (o source script)
        o
                . ./script              (o . script)

        la cosa debería funcionar.

        Y espero que funcione. Suerte.

                                        -- Eloy
_____________________________________________________________________
---- Eloy Rafael Sanz Tapia -- [EMAIL PROTECTED] -- [EMAIL PROTECTED] -----
------------------ http://www.uco.es/~ma1satae ----------------------
----------- GPG ID: 190169A0 / finger [EMAIL PROTECTED] ----------
Córdoba _ España _______________ Debian 2.2 GNU/Linux 2.2.16 rabinf50

Responder a