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


42

示例:在Ubuntu中,.local主目录中始终有一个目录,其中.profile包括以下行:

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

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

XDG目录规范中并未确切提及,但似乎是从中衍生出来的。

我想知道的是,这是否足够普遍,通常可以假定它存在于最常见的最终用户发行版中。例如,在所有的Debian衍生产品中,还是至少在Ubuntu中,是这样吗?红帽/ Fedora / CentOS生态系统怎么样?诸如此类,例如Arch,Suse以及人们在使用什么。

需要特别清楚的是,这仅用于$HOME/.local/bin而不是 $HOME/bin

出于好奇,如果您有此信息,请随时包括BSD,OS / X和其他文件。:)


我之前已经看到过这个问题,但是还没有遇到执行此操作的系统。要使问题成为主题,而不是提出意见,您可以消除对“足够普遍”的考虑,而仅询问问题来自何处以及针对新用户帐户执行此操作的系统示例。例如,“最近”的Fedora就是这样做的。
Thomas Dickey

我可以改写一下,简单地问一下“哪个”做。由于我所追求的不是一个明确的答案,因此提出这个问题有点费劲,但是大多数情况下,我认为在2016
。– Stoffe

1
我的道路上没有它,我当然也不会把它放在那里。(Debian,但xdm / fvwm,既不是Gnome也不是KDE桌面)。
dirkt

1
我检查了可能有它的系统。我的开发帐户中没有一个使用bash,并且除非我进行了特殊检查(否则请参见newpath),否则打包程序根本不够详尽。
Thomas Dickey

1
IIRC Ubuntu /etc/skel/.profile对用户的存在进行至少14.04测试$HOME/bin,并将其添加到(PATH如果存在);相比之下,16.04出现同时添加$HOME/bin$HOME/.local/bin无条件的。我根本不记得以前的Ubuntu添加的$HOME/.local/bin任何东西-但在bash包changelog(据称拥有/etc/skel/.profile)中看不到任何相关内容。
钢铁司机

Answers:


41

~/.local目录是一部分的systemd文件层次规范,是的延伸XDG用户迪尔斯规范

当Debian派生的软件包重新基于bash 4.3时,因为它们在bash 4.2中确实存在路径而bash丢失了~/.local路径,这可能会造成混乱。

这是一个bug,一个补丁已经在Debian系统中存在了一段时间。

错误是Ubuntu 16.04在路径中具有〜/ .local而Ubuntu 17.04没有该路径的原因。

如果您systemd-path以用户身份运行,您将看到它打算放在路径中。

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

从理论上讲,您的查询的答案是使用systemd或希望与systemd保持兼容性的任何发行版。

有更多信息 file-hierarchy(7)


1
谢谢!出于纯粹的好奇心,在新贵时期也是如此吗?只问是因为我的记忆说那是早于systemd的,但是同样有可能我只是记错了!
Stoffe

我怀疑这是在系统化之前,永远的约定是〜/ bin。
pfalcon

Arrgh,此错误似乎也已在16.04的bash 4.3反向移植中出现
Adrian

在Ubuntu 18.04中工作。
丹尼尔(Daniel)

1

在基于RPM的发行版上,情况看起来像这样

  • RHEL 7-确实将其添加到PATH的末尾,请参见https://bugzilla.redhat.com/show_bug.cgi?id=1583227。它可以使用,sudo su -l johndoe但是如果您不使用该-l开关,它将无法使用。
  • CentOS 7-请参阅RHEL,它始终在RHEL之后。
  • Fedora 28(可能也更旧)-与RHEL / CentOS相同,添加到PATH的末尾

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.