所以我有一个看起来像这样的脚本:
#!/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"。
发生这种情况的原因是什么?如何在执行此脚本后将其有效连接?
答案 0 :(得分:1)
脚本(或任何其他进程)无法修改其父进程的环境。这正是docker-machine env
发出需要使用eval
进行评估的shell代码的原因。
如果您希望在脚本之外访问这些变量,则需要安排在当前shell中运行eval $(docker-machine env <whatever>)
。