2008-11-20 11 views

Respuesta

5

Ésta es la única forma que conozco para hacer lo que quiera:

En foo.sh, tiene:

#!/bin/bash 
echo MYVAR=abc123 

Y cuando se quiere obtener el valor de la variable, que tienen hacer lo siguiente:

$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH 
$ echo $MYVAR #==> abc123 

Dependiendo de lo que quiere hacer, y cómo quiere hacerlo, la sugerencia de Douglas Leeder sobre el uso de la fuente podría ser utilizado, pero será la fuente de los archivos enteros, funciones y todas. Usando eval, solo se evaluará lo que se repite.

+0

Yo sólo estaba tratando de hacer eso mismo. Tenía eval y $ (foo) excepto que dejé las comillas alrededor del argumento para eval. No funcionó Gracias por la corrección de sintaxis. – jmanning2k

13

No realmente, una vez que se ejecuta en un subproceso, no puede afectar a su padre.

hay dos posibilidades:

1) Fuente el guión en lugar de ejecutarlo (ver source .):

 
    source {script} 

2) tener la salida de la escritura de los comandos de exportación, y eval que:

 
    eval `bash {script}` 
OR: 
    eval "$(bash script.sh)" 

EDITAR: Se corrigió la segunda opción para ser eval en lugar de fuente. Opps.

1

Establezca la variable en/etc/profile (cree el archivo si es necesario). Eso esencialmente hará que la variable esté disponible para cada proceso de bash.

0

Establezca la variable en/etc/profile (cree el archivo si es necesario). Eso esencialmente hará que la variable esté disponible para cada proceso de bash.

... a todos los procesos de fiesta NUEVO ...

Cuestiones relacionadas