PATH 变量值的约定

PATH 变量值的约定

我正在寻找PATH变量值的最佳实践,或者至少是约定。

我特别想知道

  1. 值中的 、 和 目录/bin是否/usr/bin有任何首选/推荐的排序?/usr/local/binPATH
  2. 在非 root 用户的变量中包含/sbin/usr/sbin和/或是否有任何缺点?/usr/local/sbinPATH

关于(1),我不知情的意见是这些路径应该按顺序出现

..:/usr/local/bin:...:/usr/bin:...:/bin:...

...在PATH变量中。这里的想法(如果有的话)是/usr/local/bin本地安装可能会放置一个命令的“本地”覆盖,该命令也可能存在于/usr/bin.出于同样的原因(现在确实扩展了它!),/usr/bin可能包含对传统上位于/bin.

我意识到以上99%都是幻想。这就是我问这个问题的原因。

以类似的幻觉方式,我似乎想起了这样一个概念:目录中的命令*/sbin是为具有超级用户权限的人准备的,如果让普通用户可以使用这些命令,他们的小脑袋就会感到困惑。换句话说,PATH普通用户的变量不应包含任何*/sbin路径。

尽管如此,我不记得曾经遇到过*/sbin在变量的初始设置中包含路径的系统(我的意思是每个用户在运行他/她的 shell 初始化脚本之前获得PATH的设置),并且PATH我想知道为什么会这样。

答案1

  1. 是和否。订单没有具体规则。更简单地说:如果我有一个工具xyzin/bin和 in /usr/bin- 并且这些不是指向同一工具的链接,而是真正不同的工具 - 默认情况下应该执行哪一个?

是的,“本地优先”确实在该决定中发挥了巨大作用。所以建议/usr/local/bin:/usr/bin:/bin确实有道理。但真正能找到覆盖的案例却很少。从理论上讲,这是可能发生的,但在实践中......

即使超级用户找到更好的版本ls,它也会在系统范围内安装为正常版本/bin,或者根本不安装,因为“标准工具应该在分发级别上维护”。如果您使用的是商业版本的 Linux - 您将被法律禁止安装不同版本的系统工具。

您可以自己安装,但在这种情况下,新版本将转到/home/user/bin,因此这实际上是可能覆盖的唯一来源。

  1. /sbin,以及/usr/sbin旨在为管理员和普通用户保留工具而不是他们。它们通常包含在 root 的个人路径中(例如/root/.bashrc)。

所以你是对的,这主要是为了不让普通用户感到困惑,也不诱惑他们。

相关内容