2016-03-03 82 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