Назад | Перейти на главную страницу

docker exec интерактивный bash с командами инициализации

Для отладки я хотел бы перейти в любой контейнер докеров, который у меня есть, и сразу же установить несколько тонкостей в моей интерактивной оболочке 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'

Опция 1

Одна из возможностей - смонтировать файл конфигурации 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

Вариант 2

Другой вариант - смонтировать ваш файл конфигурации 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 относится к файлу внутри файловая система контейнера.