例如,在 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 的末尾
至于其他发行版:
- Arch Linux - 目前没有设置路径
如果您想查看这些错误的排序,请不要忘记对这些错误进行投票/评论,因为这会突出问题的重要性。