哪些发行版的 $PATH 中有 $HOME/.local/bin?

哪些发行版的 $PATH 中有 $HOME/.local/bin?

例如,在 Ubuntu 中,.local主目录中始终有一个目录,并.profile包含以下行:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

$HOME/.local/bin默认情况下不存在,但如果创建它,它就已经存在$PATH并且可以在其中找到可执行文件。

这在文中并没有具体提到XDG目录规范但似乎是从中衍生出来的。

我想知道这是否足够常见,通常可以假设它存在于最常见的最终用户发行版中。例如,是在所有 Debian 衍生版中,还是至少在 Ubuntu 衍生版中? Red Hat/Fedora/CentOS 生态系统怎么样?诸如此类的有 Arch、SUSE 以及人们现在正在使用的东西。

需要特别说明的是,这仅适用于$HOME/.local/bin不是 $HOME/bin

出于好奇,如果您有信息,请随意包含 BSD、OS/X 和其他内容。 :)

答案1

这些~/.local目录是的一部分systemd 文件层次结构规范并且是一个延伸xdg-用户-目录规范

这可能会令人困惑,因为 Debian 派生的软件包在重新基于 Bash 4.3 时会bash丢失路径。~/.local他们确实在 Bash 4.2 中拥有了它。

它是一个漏洞,并且补丁已经在 Debian 系统中存在一段时间了。

漏洞~/.local这就是 Ubuntu 16.04在路径中而 Ubuntu 17.04 没有的原因。

如果您systemd-path以用户身份运行,您将看到它位于路径中。

$ systemd-path user-binaries
/home/foo/.local/bin

理论上,您的查询的答案是:任何使用 systemd 或想要保持与 systemd 兼容性的发行版。

有更多信息在file-hierarchy(7)

答案2

在基于 RPM 的发行版上,情况似乎如下所示:

  • RHEL 7 -确实将其添加到末尾PATH当您使用登录 shell 时。它可以工作,sudo su -l johndoe但如果您不使用该开关,它将不起作用-l
  • CentOS 7 - 请参阅 RHEL,它始终遵循 RHEL。
  • Fedora 28(可能也更旧) - 与 RHEL/CentOS 相同,添加到 PATH 的末尾

至于其他发行版:

如果您想查看这些错误的排序,请不要忘记对这些错误进行投票/评论,因为这会突出问题的重要性。

相关内容