我知道,默认情况下,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