2016-10-11 1 views
2

My Remote-Server (192.168.3.68) enthält Variablen mehrere Umgebung in meiner ~/.bashrc:fabfile sieht nicht, Remote-Umgebungsvariablen

# For instance 
export MY_DATABASE_HOST=127.0.0.1 

Als ich run('echo $MY_DATABASE_HOST') in fabfile.py setzen, es zeigt:

[192.168.3.68] run: echo $MY_DATABASE_HOST 
[192.168.3.68] output: 

Done 
Disconnecting from 192.168.3.68... done. 

Ich habe versucht, run('source ~/.bashrc') unmittelbar vor dem Echo, aber nichts ändert sich.

Warum sind die Umgebungsvariablen in ~/.bashrc nicht sichtbar für fabfile?

Was kann ich tun, um das zu beheben, weil fabfile diese Variablen lesen kann?

UPDATE

from fabric.context_managers import prefix 

# This didn't work 
with prefix('source /home/meandme/.bashrc'): 
    run('echo $MY_DATABASE_HOST') 
# This didn't work either 
run('source /home/meandme/.bashrc && echo $MY_DATABASE_HOST') 
+0

Das hat nicht funktioniert ... – smarber

Antwort

1

Eigentlich bashrc ausgeführt. Aber es gestoppt wird, weil es nicht interaktiv durch diese ausgeführt wird:

case $- in 
    *i*) ;; 
    *) return;; 
esac 

Jetzt funktioniert es, nachdem ich meine Umgebungsvariablen an der Spitze meiner bashrc bewegt.

Detailliertere Antwort hier https://github.com/fabric/fabric/issues/1519

0

jeder Aufruf von run wird eine neue Schale und keine transienten Befehle im vorhergehenden Aufruf von run sind somit verloren (z.B. wie Einstellung eine Umgebungsvariablen) öffnen. Um dieses Problem zu elide, können Sie zwei Dinge tun:

Schreiben Sie Shell-Befehle thusly:

run('source /path/to/.bashrc && echo $MY_DATABASE_HOST') 

oder Verwenden Sie den prefix Kontextmanager

from fabric.context_managers import prefix 
with prefix('source /path/to/.bashrc'): 
    run('echo $MY_DATABASE_HOST') 
+0

, die nicht funktioniert, ich habe beide versucht ... – smarber

+0

Beitrag der aktualisierte Code, der nicht, dann nicht funktioniert. – 2ps

+0

Können Sie zum Debuggen versuchen, 'run ('cat /home/meandme/.bashrc')' an den Anfang zu setzen, um die Ausgabe zu überprüfen? – 2ps