2015-09-02 8 views
5

devo immagine uno sviluppatore finestra mobile basata su Ubuntu: 14.04 che uso per sviluppare applicazioni per Ubuntu 14.04. Avvio l'immagine quando la macchina si avvia con docker start image-nameCome posso impostare la directory di lavoro corrente per finestra mobile exec con una shell bash interna?

La mia directory home è stata collegata in bind con --volumi inizialmente creati.

Per inserire l'immagine che ho un alias definito nella .bash_aliases

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

Quindi, per entrare nella immagine che basta digitare d_enter

Ma spesso mi dimentico di eseguire d_enter dopo aver inserito un percorso lungo e vorrei d_enter per passare automaticamente a quella directory interna.

La seguente non funziona.

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

C'è un altro modo per ottenere il risultato desiderato?

Per esempio, se la mia directory di lavoro corrente è: /home/matt/dev/somepath/blabla

E io tipo d_enter, la mia directory di lavoro corrente diventa momento: /home/matt quello che voglio fare per la directory corrente dopo exec è essere /home/matt/dev/somepath/blabla

+1

Certo è frustrante quando la gente downvote senza lasciare un commento. Se c'è qualcosa che non capisci, per favore dillo e migliorerò la domanda. Domande simili a bash problemi subshell come questo esiste ed è un problema comune. Ho provato a seguire le risposte suggerite ma non sembrano funzionare nel mio caso. Mi piacerebbe capire perché sia ​​così – Matt

risposta

1

Sicuramente un hack, ma si potrebbe fare qualcosa di simile a fare d_enter una funzione di shell (potrebbe rimanere un alias, ma questo è più facile da mantenere):

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

e poi nel contenitore in del .bashrc tuo account utente, aggiungere qualcosa come:

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

si può raggiungere con:
docker exec -it containerName sh -c "cd /var/www && /bin/bash"

Problemi correlati