我知道,在Ubuntu中,您可以在/etc/environment
中设置环境变量的默认值。但是在Alpine Linux中,我没有看到该文件。是否有不同的位置来设置系统范围的默认值?
我知道,在Ubuntu中,您可以在/etc/environment
中设置环境变量的默认值。但是在Alpine Linux中,我没有看到该文件。是否有不同的位置来设置系统范围的默认值?
看起来/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
/etc/profile
的内容,您可以在 /etc/profile.d/
中创建一个以 .sh
扩展名的文件,并且每次加载环境变量时都必须传递 --login
,例如:docker exec -it container sh --login
。/etc/profile
在启动alpine docker容器时自动运行? 我已经添加了一些别名到aliases.sh
文件中,并将其放置在/etc/profile.d
中,但是当我使用docker run -it [my_container] sh
启动容器时,我的别名无效。每次都必须从命令行手动输入. /etc/profile
。是否需要其他配置才能在登录时运行/etc/profile
? 如有任何见解,敬请赐教! - Jeff Kilbridesh --login
而不是仅仅使用sh
。 - Vlad Frolovsh -l
。 - Jeff Kilbride--login
。这些变量将自动在整个系统范围内全局可用。
如果您在讨论Alpine Docker镜像,则可以像下面这样在Dockerfile中定义这些env变量。 在这里,您无需每次传递--login
。这些变量将自动在整个系统范围内全局可用。
FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
COMPOSER_HOME=/home/deploy/.composer
你也可以在 /etc/profile 中定义你的别名(alias)、环境变量等,并在 Dockerfile 中定义一个 ENV
来自动引用该配置文件,例如:
FROM alpine
ENV GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXX \
COMPOSER_HOME=/home/deploy/.composer
ENV ENV="/etc/profile"
ENV
设置的值将被所有使用您的镜像作为FROM
的其他Docker镜像继承。当您的/etc/profile
在其他子镜像中可用时,可能会产生意想不到的后果。 - Slav