Я делаю простую сборку докера, где изображение запускает скрипт, который предполагает, что $USER
установлено, как обычно в оболочке bash.
Однако $USER
не устанавливается, когдаиспользуя /bin/bash
или /bin/bash --login
.Очень просто продемонстрировать, используя новейшие ubuntu
$ docker run -t -i ubuntu:latest
root@1dbeaefd6cd4:/# echo $USER
root@1dbeaefd6cd4:/# exit
$ docker run -t -i ubuntu:latest /bin/bash --login
root@d2728a8188a5:/# echo $USER
root@1dbeaefd6cd4:/# exit
Однако, если в оболочке I su -l root
, то $USER
установлено.
root@d2728a8188a5:/# su -l root
root@d2728a8188a5:~# echo $USER
root
root@d2728a8188a5:~# exit
Я в курсеЯ мог бы добавить ENV USER=root
к Dockerfile
, но я пытаюсь избежать жесткого кодирования значения.
У кого-нибудь есть предположения, почему это может происходить?Я в основном из любопытства прошу понять, что происходит, когда Docker запускает bash
.Это явно не похоже на оболочку входа в систему, и опция --login
, похоже, не работает.