我应该从哪里获取 /usr/local/etc/profile ? .bash_profile还是/etc/profile?

我应该从哪里获取 /usr/local/etc/profile ? .bash_profile还是/etc/profile?

我知道,默认情况下,bash 将 source/etc/profile~/.bash_profile.

现在,假设我还有特定于机器的配置文件命令/usr/local/etc/profile(涉及 中的内容/usr/local,因此我不想用/etc它来玷污它)。

我的问题:谁负责采购/usr/local/etc/profile?它应该源自~/.bash_profile,或者可能是以下几行:

if [ -f /usr/local/etc/profile ]; then
    . /usr/local/etc/profile
fi

应该实际上在 之内/etc/profile,因为它们对于发行版的任何安装都有效,无论实际计算机上有什么?

答案1

按照惯例,放置机器特定登录时初始化的正确位置是/etc/profile/usr/local/etc无论如何,许多 Unix 变体根本不关心if 。

请注意,对于 GUI 登录,不会profile直接读取任何文件。然而,许多 X11 发行版都安排/etc/profile从 X 会话初始化中读取源代码。/usr/local/etc/profile不是一个经典地点,不会被采购。

许多发行版都有一个目录/etc/profile.d,并将代码放入/etc/profile其中以获取文件/etc/profile.d。如果您的发行版这样做,则计算机特定内容的最佳位置将是/etc/profile.d.

在现代 *BSD 上,/usr/local适用于打包软件,而不是本地安装,并且适用/usr/local/etc于随包或其配置一起提供的文件。/etc和之间的区别在于/usr/local/etc配置是针对基本系统还是针对特定程序。/etc/profile是一个系统范围的配置 - 您可以假设,如果登录 shell 是第三方包,那么它的配置应该位于 中/usr/local/etc,但profile不特定于给定的 shell,并且适用于/bin/sh属于基本系统的一部分。 (FreeBSD 似乎不一致:bash 包读取/usr/local/etc/profile而 zsh 包读取/etc/zprofile。)

如果您(作为管理员)让用户从他们的 中获取另一个文件.profile,则表明该文件中的自定义并不适合所有人,而仅适合有特殊需求的用户。

答案2

来源是谁的责任/usr/local/etc/profile

如果所有用户都可以使用它,那么可以从 获取它/etc/profile。将您已经提到的这些行添加到/etc/profile

[ -f /usr/local/etc/profile ] && source /usr/local/etc/profile

相关内容