unix/linux 文件系统结构背后的推理/设计选择是什么?

unix/linux 文件系统结构背后的推理/设计选择是什么?

我最近不再使用 Windows,现在我的计算机上运行 Linux。在 Windows 中,有程序文件文件夹。大多数程序文件都放入其自己的文件夹中,对我来说,这似乎更易于管理和浏览。

linux中程序文件存放在不同的地方,这样做的原因是什么?这样对于开发者来说是不是更容易开发呢?

答案1

是的。

这样做时,它是有序的,就像

  • 所有程序的配置文件都放在一个路径下/etc
  • 所有程序的二进制文件都在一个路径下/bin/usr/bin...

还有其他类似的事情,比如/home/dev /boot等等/tmp

答案2

祝贺您在 Linux 领域的努力!在Ubuntu中主要是这样的:

程序或脚本/usr/bin
库,用于/usr/lib
您已编译和安装的程序/usr/local/bin,以及 每个用户配置的/usr/local/lib
系统程序的配置/etc
$HOME/.config

$HOME是包含您的主文件夹的环境变量,例如。"/home/larry"

您会发现许多其他程序将用户配置文件直接放入 中$HOME,这不是最佳实践。

一些较大的程序喜欢安装在其中,/opt因为它可以保持整洁。

如果安装程序为我提供了该选项,并且我不需要该程序可供其他用户使用,我将安装到$HOME/bin$HOME/opt

哦,还有最后一点:Windows 在多个位置安装文件,包括c:\Windows\Program Filesc:\Windows\Program Files\Common Filesc:\Windows\System32c:\Windows\ProgramData,以及用户主目录中的配置文件。但更糟糕的是,大量的配置信息分散在注册表中,使得程序的可移植性几乎不可能。

答案3

文件系统层次结构标准可能值得一看。否则,过去的磁盘空间是宝贵的(而且昂贵!),因此人们可能有一个最小的/目录,其中包含启动和使用系统所需的程序和配置,然后/usr从共享 NFS 服务器挂载大多数其他目录。此外,各种重复的目录允许将“供应商提供的内容”(例如/usr)和(至少在 BSD 上通常如此)/usr/local软件包的安装位置进行干净(呃)分离。这样,供应商更新就永远不会破坏站点已安装的任何内容,因为使用了完全不同的目录。例如,供应商可能提供 Webserver 2.0,但某些应用程序需要 Webserver 1.1;如果您将 Webserver 1.1 安装到供应商空间中,则供应商更新可能会破坏该软件,或者会涉及其他复杂情况而无法让供应商更换该软件......

相关内容