Pregunta

Estoy tratando de llamar a un script de shell que establece un montón de variables de entorno en nuestro servidor de una mercurial gancho.La secuencia de comandos de shell que se llama bien cuando un nuevo changegroup viene, pero las variables de entorno no se lleven más allá de la llamada al script de shell.

Mi hgrc archivo en el repositorio se parece a esto:

[hooks]
changegroup = shell_script
changegroup.env = env

Puedo ver la salida de la secuencia de comandos de shell y, a continuación, la salida de la orden env, pero el env comando no incluyen el nuevo conjunto de variables de entorno por la secuencia de comandos de shell.

He comprobado que el shell script funciona correctamente cuando se ejecuta por sí mismo, pero cuando se ejecuta en el contexto de la mercurial gancho no se ha configurado correctamente el entorno.

¿Fue útil?

Solución

Secuencias de comandos de Shell no se puede modificar su entorno.

http://tldp.org/LDP/abs/html/gotchas.html

Una secuencia de comandos no pueden exportar las variables de regreso a su proceso padre, el shell, o para el medio ambiente.Como aprendimos en biología, un proceso hijo puede heredar de un padre, pero no viceversa

$ cat > eg.sh 
export FOO="bar";
^D
$ bash eg.sh 
$ echo $FOO; 

$

también, el problema es mayor, ya que tiene varias llamadas de bash

bash 1 -> hg -> bash 2 ( shell script ) 
             -> bash 3 ( env call )

sería como pensar que podía establecer una variable en un script de php y luego por arte de magia a conseguir con otro simplemente ejecutan una después de la otra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top