Krateng Asked: 2021-12-21 14:04:38 +0800 CST2021-12-21 14:04:38 +0800 CST 2021-12-21 14:04:38 +0800 CST 服务器上需要遵循哪些目录规范? 772 在 PC 上,XDG 桌面规范允许各个桌面为各种数据设置不同的文件夹。在编写只能在服务器上运行的应用程序时,是否应该简单地进行硬编码/etc/myapp等/var/cache/myapp,或者是否应该检查潜在的环境变量或类似的变量? directory-structure fhs 2 个回答 Voted Best Answer Artem S. Tashkinov 2021-12-21T14:31:58+08:002021-12-21T14:31:58+08:00 我知道的大多数 Linux 应用程序确实是硬编码路径,但有时允许使用环境变量和命令行参数重新定义它们。 我认为硬编码这些路径没有任何问题,但如果您允许将配置文件位置指定为命令行参数并且在此 conf 文件中允许更改/var/cache/myapp. 如果您对所有内容进行硬编码,至少要确保发行版中的现有软件包不会与您的位置冲突。对于基于 DNF 的发行版,它将是(这是一个示例): dnf whatprovides '/var/cache/dnf' dnf-4.9.0-1.fc35.noarch : Package manager Repo : @System Matched from: Filename : /var/cache/dnf dnf-4.9.0-1.fc35.noarch : Package manager Repo : fedora Matched from: Filename : /var/cache/dnf 所以你显然不能使用/var/cache/dnf. /opt/appname最后,将所有东西都安装在or中会容易得多/usr/local/opt/appname。没有本机 Linux 应用程序使用这些目录。 ilkkachu 2021-12-21T14:44:27+08:002021-12-21T14:44:27+08:00 应该在程序上硬编码路径吗?不! 至少,您应该在编译时使路径可配置,以便应用程序可以安装在/var/local、 或/opt、 或/home/someuser、 或系统管理员想要的任何位置。更好的是,有一个命令行选项可用于将程序指向其配置文件,然后可用于设置所需的任何其他路径。(在编译时设置默认位置。)
我知道的大多数 Linux 应用程序确实是硬编码路径,但有时允许使用环境变量和命令行参数重新定义它们。
我认为硬编码这些路径没有任何问题,但如果您允许将配置文件位置指定为命令行参数并且在此 conf 文件中允许更改
/var/cache/myapp
.如果您对所有内容进行硬编码,至少要确保发行版中的现有软件包不会与您的位置冲突。对于基于 DNF 的发行版,它将是(这是一个示例):
所以你显然不能使用
/var/cache/dnf
./opt/appname
最后,将所有东西都安装在or中会容易得多/usr/local/opt/appname
。没有本机 Linux 应用程序使用这些目录。应该在程序上硬编码路径吗?不!
至少,您应该在编译时使路径可配置,以便应用程序可以安装在
/var/local
、 或/opt
、 或/home/someuser
、 或系统管理员想要的任何位置。更好的是,有一个命令行选项可用于将程序指向其配置文件,然后可用于设置所需的任何其他路径。(在编译时设置默认位置。)