我知道,默认情况下,bash将源/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中,因为它们对于任何发行版的安装都是有效的,而不管实际机器上的是什么?
发布于 2021-12-09 10:28:11
通常,将机器特定的登录时间初始化的正确位置是/etc/profile.无论如何,许多Unix变体对/usr/local/etc并没有多大的影响。
请注意,对于GUI登录,不直接读取profile文件。然而,许多X11发行版都安排从X会话初始化中读取源/etc/profile。/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中获取另一个文件,这意味着该文件中的自定义并不是针对每个人的,只针对有特殊需要的用户。
发布于 2021-12-09 10:29:29
谁的责任是来源
/usr/local/etc/profile?
如果所有用户都可以使用它,那么可以从/etc/profile中获取它。将您已经提到的行添加到/etc/profile中
[ -f /usr/local/etc/profile ] && source /usr/local/etc/profilehttps://unix.stackexchange.com/questions/680779
复制相似问题