Флаг -it
вступает в противоречие с командой для запуска, в которой вы указываете docker создать псевдо-терминал (ptty), а затем запускаете команду в этом терминале (bash -c ...
). Когда эта команда завершается, выполнение завершается.
Чтобы обойти это, некоторые люди сделали только переменные export
в своей исходной среде, и последняя команда будет exec bash
. Но если вам нужны псевдонимы или другие элементы, которые не наследуются таким образом, тогда ваши параметры немного более ограничены.
Вместо запуска исходного кода в родительской оболочке, вы можете запустить его в целевой оболочке. Если вы изменили свой .bash_profile, включив в него следующую строку:
[ -n "$DOCKER_LOAD_EXTRA" -a -r "$DOCKER_LOAD_EXTRA" ] && source "$DOCKER_LOAD_EXTRA”
и тогда ваша команда была:
... /bin/bash -c "cd /mnt/bb_repository/oe-core && DOCKER_LOAD_EXTRA=build/conf/set_bb_env.sh exec bash"
это может сработать. Это говорит вашему .bash_profile загружать этот файл, когда переменная env уже установлена, но не иначе. (Также может быть флаг -e
в командной строке докера, но я думаю, что он устанавливает его глобально для всего контейнера, что, вероятно, не то, что вы хотите.)