2015-09-02 40 views
5

我有一個開發人員基於Ubuntu 14.04的Docker鏡像,我使用它來開發適用於Ubuntu 14.04的應用程序。我在機器啓動時啓動此映像docker start image-name如何使用內部bash shell設置docker exec的當前工作目錄?

我的主目錄在初始創建時已用--volumes綁定裝入。

要進入我在.bash_aliases

alias d_enter="docker exec -ti ub1404-dev /bin/bash" 

定義的別名圖像,這樣進入圖像我只需鍵入d_enter

但我經常忘記輸入長路徑後運行d_enter,想d_enter自動切換到該內部目錄。

以下不起作用。

docker exec -ti ub1404-dev /bin/bash <(echo ". ~/.bashrc && cd $(pwd)") 

有沒有另一種方法可以達到預期的效果?

例如,如果我的當前工作目錄是:/home/matt/dev/somepath/blabla

我型d_enter,我當前的工作目錄成爲當前:/home/matt我想要查找exec後當前目錄做的是/home/matt/dev/somepath/blabla

+1

這肯定是令人沮喪的,當人們downvote沒有留下意見。如果有什麼你不明白的,請說出來,我會改進這個問題。像這樣的問題類似bash的子問題存在,這是一個常見的問題。我試圖按照建議的答案,但他們似乎不適用於我的情況。我想明白這是爲什麼 – Matt

回答

1

肯定一個黑客,但你可以做一些喜歡做d_enter一個shell功能(可以留下一個別名,但是這是更容易維護):

d_enter() { 
    pwd > ~/.docker_initial_pwd 
    docker exec -ti ub1404-dev /bin/bash 
} 

,然後在您的用戶帳戶的.bashrc,添加類似容器:

if [[ -f "${HOME}/.docker_initial_pwd ]]; then 
    cd $(cat "${HOME}/.docker_initial_pwd") 
fi 
0

你可以實現它:
docker exec -it containerName sh -c "cd /var/www && /bin/bash"

相關問題