在Alpine linux中设置系统默认环境变量的位置?

1ij*_*ijk 20 configuration default environment-variables alpine-linux

我知道,使用Ubuntu,您可以为环境变量设置默认值/etc/environment; 我没有在Alpine linux中看到该文件.是否有不同的位置来设置系统范围的默认值?

Vla*_*lov 25

这似乎/etc/profile是我能找到的最好的地方.至少,在那里设置了一些环境变量:

export CHARSET=UTF-8
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PAGER=less
export PS1='\h:\w\$ '

umask 022

for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done
Run Code Online (Sandbox Code Playgroud)

根据内容/etc/profile,您可以创建一个.sh扩展名为的文件,每次/etc/profile.d/都必须通过--login加载env变量,例如docker exec -it container sh --login.

  • 当你以交互方式启动高山码头工作容器时,如何让`/ etc/profile`自动运行?我在`aliases.sh`文件中添加了一些别名并将其放在`/ etc/profile.d`中,但是当我使用`docker run -it [my_container] sh`启动容器时,我的别名不活动.我必须手动输入`./ etc/profile`每次都来自命令行.是否需要一些其他配置才能使`/ etc/profile`在登录时运行?任何见解都表示赞赏! (7认同)
  • @JeffKilbride使用`sh --login`而不仅仅是`sh`. (3认同)
  • @VladFrolov谢谢!我在另一个帖子中问了这个问题,并在那里得到了答案.这也有效:`sh -l`. (2认同)

Sky*_*Rar 12

如果您谈论的是 Alpine Docker 镜像,那么您可以在 Dockerfile 中定义这些 env 变量,如下所示。在这里你不需要--login每次都通过。这些变量将在全球范围内自动在系统范围内可用。

FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
    COMPOSER_HOME=/home/deploy/.composer
Run Code Online (Sandbox Code Playgroud)

您还可以在 /etc/profile 中定义别名、env 等,并定义ENV如下所示的内部 Dockerfile 以自动获取配置文件。

FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
    COMPOSER_HOME=/home/deploy/.composer
ENV ENV="/etc/profile" 
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是一个非常好的替代方案,没有 --login 的开销。谢谢你! (2认同)
  • 快速说明:“ENV”设置的值将被使用您的映像作为“FROM”的所有其他 docker 映像继承。当您的“/etc/profile”在其他子映像中可用时,可能会产生意想不到的后果 (2认同)