Определение командной оболочки ОС по-умолчанию в Docker-контейнере
Чтобы определить, какую неинтерактивную командную оболочку (shell) использует Docker-контейнер по-умолчанию, необходимо сделать следующее (Заменяем <CONTAINER_NAME> на имя контейнера, в котором надо определить оболочку):
-
Создать в контейнере скрипт[1][2] :
# docker exec <CONTAINER_NAME> sh -c "echo 'readlink /proc/\$\$/exe' > test.sh"
-
Добавить скрипту права на запуск:
# docker exec <CONTAINER_NAME> sh -c "chmod +x test.sh"
При желании можно объединить обе команды в кавычках в одну с помощью
&&
:# docker exec <CONTAINER_NAME> sh -c "echo 'readlink /proc/\$\$/exe' > test.sh && chmod +x test.sh"
-
Запустить скрипт:
# docker exec <CONTAINER_NAME> sh -c "./test.sh"
Результат зависит от используемой по-умолчанию (/bin/sh) оболочки, например, в стоковой Ubuntu вывод будет следующий:
/usr/bin/dash
https://unix.stackexchange.com/a/71185 - определение оболочки ↩︎
https://unix.stackexchange.com/a/162477 - экранирование $ в
echo
↩︎