为什么 Centos7 从 /etc/profile 和 /etc/bashrc 运行 /etc/profile.d 脚本?

为什么 Centos7 从 /etc/profile 和 /etc/bashrc 运行 /etc/profile.d 脚本?

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 在被调用时默认比基于shRed Hat 的 shell 表现得“更笨”;bash即使被称为 ,它们的行为也像sh

红帽错误解释说这sh.local是为了 SA 覆盖一切其他发现于/etc/profile.d.

相关内容