2016-03-03 48 views
0

所以我有一个脚本,看起来像这样:脚本Docker,运行脚本后未连接?

#!/bin/bash 
    if [ $1 ]; then 
     docker-machine start $1 
     docker-machine env $1 
     eval $(docker-machine env $1) 
     docker ps -a 
    fi 

一旦它虽然运行,这些命令的范围似乎过。例如,脚本运行后,我没有连接到docker-machine,但是我想编写这部分脚本,以便我可以访问它。

例如,在运行此脚本(“./script.sh”)后,我仍然无法运行“docker ps -a”。

发生这种情况的原因是什么?在执行此脚本后,如何才能有效地连接它?

回答

1

脚本(或任何其他进程)不能修改其父进程的环境。这正是为什么docker-machine env发出需要使用eval进行评估的shell代码。

如果您希望在您的脚本之外访问这些变量,则需要安排在当前shell中运行eval $(docker-machine env <whatever>)

+0

完美!在这段时间和一些阅读之间,我已经弄清楚了。将完成一个简短的博客文章解决方案。谢谢。 – Adron