我有几个运行系统检查的 bash 脚本。这些脚本从文件 /etc/healthchecks/config 中获取配置选项。
除了配置文件外,我还有一个共享函数文件。脚本应该能够获取该文件并运行其中的函数。
根据文件系统层次结构标准,我应该将共享函数文件放在哪里?它不是配置,所以它似乎不属于 /etc,但它也没有被执行,所以 /usr/bin 似乎不正确。也许是 /usr/lib?
答案1
您应该将healthchecks
可执行文件放在 /usr/local/bin 或 /opt/bin 中。如果您看到文件夹 /opt 为空,则意味着您的 Linux 发行版不使用它。因此,合适的位置是 /usr/local。
/usr/local 和 /opt 是每个“手动”包/程序必须放置的地方。/usr 用于由包管理器 (即 dpkg) 管理的包。根据 FHS,/opt 是手动包的“标准位置”,但 debian 发行版使用 /usr/local。
对于配置文件,它们必须放在 /usr/local/etc 上,因为 /etc 是用于自动包和其他系统程序的配置文件。
那么,共享函数的正确位置就是 /usr/local/share(/usr/share 用于自动软件包的共享文件)。每个设计为只读且独立于架构的文件都属于 /usr/share 或 /usr/local/share(如果它们由“自动”或“手动”软件包拥有)。
/usr/lib 用于动态和静态二进制库(.so 或 .a),而不是“解释”库/函数。
通常,解释器在 /etc/share/ 中针对每个版本都有不同的子文件夹,并且在每个版本文件夹内,都有用于脚本、语言环境、测试、示例等的不同文件夹。
如果有一天你为你的软件包创建了一个官方存储库healthchecks
,你可以将 /usr/local/healthchecks 内容迁移到 /usr/healthchecks 和 /etc/healthchecks。
答案2
我通常尝试将站点特定内容保留在这些保留的系统区域之外。您可以考虑使用自己的顶级目录层次结构,因为使用系统区域时,特殊站点文件在系统演变过程中很容易丢失或被遗忘。另一种可能性可能是 /usr/local/etc.....