unix程序中的配置位置

Kar*_*lek 5 unix

我想编写一个unix/linux程序,它将使用配置文件.

我的问题是,我应该在哪里放置文件的位置?

我可以将位置(如/etc)硬编码到程序本身.

但是,我想,如果没有权限的用户可以在其他地方安装它(通过make),比如~.

makefile应该编辑源代码吗?或者它通常以不同的方式完成?

oco*_*odo 6

创建一些默认值:

  • /etc/appname
  • ~/.appname

然后,如果要允许覆盖这些,请让应用程序检查环境变量.例如

  • $app_userconfig
  • $app_config

其中包含覆盖路径/文件名.

最后添加一个命令行选项,允许在运行时指定配置,例如

  • -c | --config {filename}


dmc*_*kee 1

通常使用一系列位置来获取位置:

  1. 由用户作为命令行参数提供(即./program -C path/to/config/file.cfg)。
  2. 来自环境变量(char *path_to_config = getenv("PROGRAMCONFIG"); )。
  3. 可能会查找用户特定或本地版本(stat("./program.cfg")或建立一个字符串来指定“$HOME/.program/config.cfg”或“$HOME/.program.cfg”等stat)。
  4. 硬编码为备份 ( stat("/etc/program/config.cfg",...))。