我在OS-X上(小牛,如果重要的话),我正在制作一个bash脚本,它将使用名为" templates"的文件夹中的资源。我试图找出应该放在哪里(模板文件夹)。我想这样做是因为用户在安装它时不需要修改它们的路径,所以我宁愿不按照终端mysql命令的方式来做它(它存在于/usr/local/mysql/bin
)中的文件夹。我真的希望能够将它们放入usr/bin
,但我不知道它是否是礼貌的#34;将文件夹放在那里(我在那里看不到任何文件)。
现在我倾向于将脚本放在usr/bin
中,并将模板放在usr/lib
中。是这种类型的东西通常是如何完成的,还是有另一种方式?假设有一个约定,我想遵循惯例。我也希望它能够应用于尽可能多的Unix平台(我希望将bash脚本存在的目录放在尽可能多的Unix平台上)。感谢。
答案 0 :(得分:2)
如果您按照Filesystem Hierarchy Standard(FHS),您的可执行文件会进入/usr/local/bin
,而只读模板文件会进入/usr/local/share/YOURAPP/
。引用the FHS:
<强>
/usr/local/share
强>此目录内容的要求与
/usr/share
相同。 [...]
and:
/usr/share
层次结构适用于所有只读架构独立数据文件。
(强调补充)
如果系统管理员要自定义模板文件以在系统范围内生效,那么他们只需进入/etc/YOURAPP/templates
(或类似的东西)。
如果模板文件是基于每个用户自定义的,则修改后的模板副本(从/usr/local/share/YOURAPP/templates
复制)需要保存在{{1}下的用户目录中或类似的东西(感谢 technosaurus 进行更正)。
您提到要将模板安装在可执行文件旁边的目录中。这不是UNIX上的标准方法,至少是由FHS进行的。如果你真的想要走这条路线,有一种将你的应用程序安装到$HOME/.config/YOURAPP/templates
的惯例,使用你想要的文件夹内的任何组织。
在所有情况下,将可执行文件直接安装到/opt/YOURAPP/
并不是一个好习惯,因为该目录被认为是在OS /发行版的独占控制之下。如果要在那里安装,可接受的方法是为每个支持的操作系统/发行版的包管理器创建一个包。