$HOME/bin 目录的用途是什么?

$HOME/bin 目录的用途是什么?

由此得到的二进制文件可以source立即获取吗?

我是否需要将其添加到 bash 配置文件中以获取其来源?

如果我理解正确的话,还有其他地方可以存放二进制文件,例如:

  • /usr/bin
  • /bin
  • /usr/local/bin

为什么这么多?

答案1

这些bin文件夹用于可执行程序。

在 Ubuntu 19.10 之前,文件夹/bin本身仅用于启动和修复系统的最低限度功能。该/usr/bin文件夹用于大多数可执行程序。现在/bin已符号链接到/usr/bin,因此它们现在是同一个。

$ lsb_release -r
Release:    20.04
$ ls -al /
total 104
drwxr-xr-x  20 root root  4096 Apr 16 08:28 .
drwxr-xr-x  20 root root  4096 Apr 16 08:28 ..
lrwxrwxrwx   1 root root     7 Oct  2  2021 bin -> usr/bin
$ lsb_release -r
Release:    18.04
$ ls -al /
total 1459924
drwxr-xr-x  24 root root       4096 Feb 24 07:36 .
drwxr-xr-x  24 root root       4096 Feb 24 07:36 ..
drwxr-xr-x   2 root root       4096 Feb 24 07:11 bin

用于/usr/local/bin不受分发包管理的可执行程序。

您的文件夹的答案$HOME/bin包含在.profile您的主文件夹 ( /home/<user>/) 中。它 ( .profile) 在您登录时自动获取。

您的主文件夹中的文件包含.profile以下部分(这完全取决于偏好):

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"

如果存在上述任一bin文件夹,则当用户登录其帐户时,它们会自动添加到$PATH。它用于存放用户自己的私人可执行程序和脚本。它们主要用于这些文件夹的用户或所有者,使它们对其他用户保密。

答案2

Linux 系统是多用户的,即使只有一个人使用该系统。这一点值得记住。

  • /bin 用于最小环境中所需的程序,没有 GUI。
  • /usr/bin 用于存储可选程序,但通常使用带有或不带有 GUI 的程序。
  • /usr/local/bin 用于存放未由包管理器管理的程序。这通常是脚本、自定义代码或自定义编译代码,供系统所有用户访问
  • ~/bin/ 用于存放脚本、代码、自定义代码,这些代码仅供单个用户使用,而不是供所有人使用。如果系统管理员拒绝安装软件包或将非软件包程序安装到 /usr/local,用户也可以在此放置他们喜欢的任何代码。

主要的 Linux 发行版 (大部分) 都遵循 Linux 文件系统层次结构标准文档。每个目录的用途摘要可在同名维基百科文章中找到。https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard 它严格遵循已存在 30 多年的 UNIX 文件系统层次结构标准。我不知道 UNIX 标准是否真正标准,但它们似乎都非常相似。

我发现 Ubuntu(以及其他一些发行版)上唯一违反这些标准的地方是与 /media/ 以及 snap 包所在的位置有关。但这是另一个问题。

相关内容