Pergunta

Eu estou tentando chamar um shell script que define um monte de variáveis ??de ambiente no nosso servidor de um gancho mercurial. O shell script é chamado bem quando uma nova changegroup vem, mas as variáveis ??de ambiente não está carregando mais passado a chamada para o shell script.

Meu arquivo hgrc sobre a aparência repositório como este:

[hooks]
changegroup = shell_script
changegroup.env = env

Eu posso ver a saída do shell script, e então a saída do comando env, mas o comando env não inclui as novas variáveis ??de ambiente definidas pelo script shell.

Eu tenho verificado que o shell script funciona bem quando executado por si só, mas quando executado no contexto do gancho mercurial não configurar adequadamente o meio ambiente.

Foi útil?

Solução

scripts de

Shell não pode modificar o seu ambiente.

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

Um script pode não variáveis ??de exportação de volta ao seu processo pai, o shell, ou para o meio ambiente. Assim como aprendemos em biologia, um processo filho pode herdar de um dos pais, mas não vice-versa

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

$

Além disso, o problema é maior, como você tem várias chamadas de festa

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

que seria como pensar que eu poderia definir uma variável em um script php e depois magicamente obtê-lo com outro simplesmente por correr uma após a outra.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top