Для отладки я хотел бы перейти в любой контейнер докеров, который у меня есть, и сразу же установить несколько тонкостей в моей интерактивной оболочке bash. По какой-то причине стиль --init-file ниже теперь работает.
Как и во многих других вещах, я полагаю, что мне не хватает некоторой проблемы с escape-последовательностями. Какие-либо предложения?
docker exec -it mycontainer bash --init-file <(echo "PS1='\w\$ '; TERM=xterm256; alias ls='ls -GFh'")
Ни одна из команд в --init-file не применяется к оболочке bash, запущенной в контейнере.
Учитывая вашу конфигурацию bash в файле my-bash-niceties
# my-bash-niceties
PS1 = '\ w \ $'
TERM = xterm256
псевдоним ll = 'ls -GFh'
Одна из возможностей - смонтировать файл конфигурации bash в вашем контейнере ...
docker run --detach -it -v `pwd`/my-bash-niceties:/etc/bashrc --name mycontainer bash:4.0
... и вызовите bash, используя его как файл инициализации.
docker exec -it mycontainer bash --init-file /etc/bashrc
Другой вариант - смонтировать ваш файл конфигурации bash как ваш ~/.bashrc
...
docker run --detach -it -v `pwd`/my-bash-niceties:/root/.bashrc --name mycontainer bash:4.0
... и просто выполните команду bash в контейнере.
docker exec -it mycontainer bash
Теоретически третий (и лучший!) Вариант - просто смонтировать файл конфигурации bash как /etc/profile.d/my_bash_rc.sh (работает любой файл .sh), но я не знаю, почему этот контейнер не соблюдайте эту конвенцию. :(
кстати, опция --init-file относится к файлу внутри файловая система контейнера.