2015-09-02 35 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"

相关问题