Centos7中有以下内容/etc/profile
:
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
以及以下内容/etc/bashrc
(从 运行~/.bashrc
):
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
Debian 和 Ubuntu 仅从 运行这些/etc/profile
,这是我所期望的。
- 为什么 Centos 从两者上运行它们?
- 为何存在差异
sh.local
?
答案1
我不确定第一个问题,但我认为原因是基于 Debian 的 shell 在被调用时默认比基于sh
Red Hat 的 shell 表现得“更笨”;bash
即使被称为 ,它们的行为也像sh
。
这红帽错误解释说这sh.local
是为了 SA 覆盖一切其他发现于/etc/profile.d
.