2016-10-11 3 views
2

Мой удаленный сервер (192.168.3.68) содержит несколько переменных окружения, установленные в моем ~/.bashrc:fabfile не видит переменные окружения удаленного

# For instance 
export MY_DATABASE_HOST=127.0.0.1 

Когда я поставил run('echo $MY_DATABASE_HOST') в fabfile.py, он показывает:

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

Done 
Disconnecting from 192.168.3.68... done. 

Я попытался добавить run('source ~/.bashrc') непосредственно перед эхом, но ничего не меняется.

Почему переменные окружения ~/.bashrc не отображаются в файле fabfile?

Что мне делать, чтобы исправить это, потому что fabfile должен уметь читать эти переменные?

ОБНОВЛЕНИЕ

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

Это не сработало ... – smarber

ответ

1

На самом деле Bashrc выполняется. Но она будет остановлена, потому что он не работает в интерактивном режиме через это:

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

Сейчас он работает после того, как я переместил свои переменные окружения в верхней части моей Bashrc.

Более подробный ответ здесь https://github.com/fabric/fabric/issues/1519

0

Каждый вызов run откроет новую оболочку и любые переходные команды в предыдущем вызове run, таким образом, потерянные (например, такие как установка переменной среды). Для того, чтобы игнорировать этот вопрос, вы можете сделать две вещи:

Напишите ваши команды оболочки таким образом:

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

или используйте prefix контекст менеджер

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

Это не работает, я попробовал и ... – smarber

+0

сообщение обновленный код, который не работает, то. – 2ps

+0

Для отладки вы можете попробовать добавить 'run ('cat /home/meandme/.bashrc')' в начало для проверки вывода? – 2ps

Смежные вопросы