2017-01-04 8 views
0

У меня есть сценарий, как так:набор переменных докер-машина с использованием Баш скрипт

#!/usr/bin/env bash 
eval $(docker-machine env default) 

Цель состоит в том, чтобы автоматизировать установку переменных как

export DOCKER_TLS_VERIFY 
export DOCKER_HOST 
export DOCKER_CERT_PATH 
export DOCKER_MACHINE_NAME 

Но когда я проверяю после этого, переменные не заданы. Это не так, если я запускаю каждую команду export вручную. Что я делаю не так?

ответ

-1

Если вы хотите, чтобы среда, установленная в вашей текущей оболочке, вам нужно «запустить» сценарий, а не запускать его.

Когда вы запускаете скрипт, переменные будут установлены в дочерней среде bash и не будут существовать, как только этот скрипт/процесс погибнет.

$ ./machine.sh 
DOCKER_HOST is tcp://192.168.99.100:2376 
$ echo "[$DOCKER_HOST]" 
[] 

Когда вы источник сценарий, переменные будут установлены в текущей среде

$ . machine.sh 
DOCKER_HOST is tcp://192.168.99.100:2376 
$ echo "[$DOCKER_HOST]" 
[tcp://192.168.99.100:2376] 
+0

не работал. можете ли вы предоставить более подробный ответ? – dopatraman

0

export делает переменные доступны только к активной сессии оболочки. Если вы хотите, чтобы сохраняться через сессии, вы должны добавить их в свой профиль Баша:

docker-machine env default >> ~/.bash_profile 

Таким образом, переменные будет доступен во всех будущих сессиях оболочки. Обязательно перезапустите оболочку после выполнения команды.

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

  • Нет связанных вопросов^_^