Frage

Ich versuche, ein Shell-Skript aufrufen, die eine Reihe von Umgebungsvariablen auf unserem Server von einem Quecksilber-Haken setzt. Die Shell-Skript werden aufgerufen, in Ordnung, wenn ein neuer changegroup kommt, aber die Umgebungsvariablen tragen nicht über hinter dem Aufruf des Shell-Skript.

Meine hgrc Datei auf dem respository sieht wie folgt aus:

[hooks]
changegroup = shell_script
changegroup.env = env

ich die Ausgabe des Shell-Skript sehen können, und dann die Ausgabe des env-Befehl, sondern der Befehl env nicht enthalten sind die neuen Umgebungsvariablen durch das Shell-Skript festgelegt.

ich überprüft habe, dass der Shell-Skript funktioniert gut, wenn sie von selbst laufen, aber wenn sie in Zusammenhang mit dem Quecksilber-Haken führen Sie es nicht richtig, die Umwelt gesetzt hat.

War es hilfreich?

Lösung

Shell-Skripte können nicht ihre Umgebung ändern.

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

  

Ein Skript exportieren kann keine Variablen zurück zu seinem übergeordneten Prozess, der Schale, oder für die Umwelt. So wie wir in der Biologie gelernt, kann ein Kind Prozess von einem Elternteil erben, aber nicht umgekehrt

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

$

Auch hier ist das Problem größer, wie Sie mehrere Anrufe von bash

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

wäre es wie denken ich eine Variable in einem PHP-Skript einstellen könnte und es dann auf magische Weise mit einem anderen bekommen einfach durch einen nach dem anderen ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top