将 Shell 别名文件复制到容器后不起作用,使用源命令后可以起作用吗?

将 Shell 别名文件复制到容器后不起作用,使用源命令后可以起作用吗?

我正在复制aliases.sh到基于高山的容器中:

FROM php:8.1-fpm-alpine AS php

COPY .docker/aliases.sh /etc/profile.d/

CMD ["php-fpm"]

当我登录到 shell 时,我的别名不起作用。如果我运行:

source /etc/profile

突然开始工作了。也许我需要添加source命令Dockerfile,但是……这对我来说没有意义。

答案1

Unix shell 通常只/etc/profile在作为登录 shell 启动时加载文件。Alpine 上的默认 shell Ash 也是这样做的。

来自灰手册

登录 shell 首先从文件 /etc/profile 和 .profile 读取命令(如果存在)。

使用 启动 shell-l应该将其作为登录 shell 启动,并且它应该读取/etc/profile

ash -l

答案2

ENV ENV="/etc/profile"是我解决问题的方法。已将其添加到Dockerfile。现在,无论我如何登录容器(使用 Docker Desktop、VS Code docker 扩展等),我都可以使用 提供的别名aliases.sh

相关内容