读取配置值的顺序是什么?

Pet*_*mit 14 configuration environment-variables configuration-files command-line-arguments

对于我正在编写的python程序,我想给出以三种不同方式配置它的机会.环境变量,配置文件和命令行参数.

从逻辑上讲,我认为命令行参数应始终具有最高优先级.我有点怀疑环境变量是否应优先于配置文件?配置文件是系统范围的,用户特定的还是在命令行中作为参数给出是否重要?

(注意我的平台是Unix/Linux)

kin*_*ris 25

我知道的标准是首先查找命令行参数,如果找不到环境var,那么本地配置文件然后是全局配置文件.

所以当某个软件包安装在某个地方时.它将具有默认配置文件.可以使用本地配置文件更改此设置.可以使用environ参数覆盖哪个,然后命令行参数具有最高优先级.

如果在命令行上声明了配置文件,则其内容将优先于environ params或任何其他配置文件.但是命令行参数优先于它.但请记住,搜索路径仍然存在.如果包正在寻找var,它会寻找.

Command line.
Config file thats name is declared on the command line.
Environment vars
Local config file (if exists)
Global config file (if exists)
Run Code Online (Sandbox Code Playgroud)

我认为许多命令行编译器和Boost库配置pak以类似的方式工作

  • 我本身找不到任何标准,但 POSIX 为其涵盖的实用程序系统地强制执行“配置->环境->命令行”应用程序顺序。 (3认同)
  • “命令行上的配置文件”的位置是有争议的。根据我的经验,它通常会替换库存文件。 (2认同)

saa*_*aaj 9

AWS CLI与公认的答案一致:

选项的优先级:

  • 如果您使用本主题中描述的环境变量之一指定选项,它将覆盖从配置文件中的配置文件加载的任何值。

  • 如果您在 CLI 命令行上使用参数指定选项,它将覆盖相应环境变量或配置文件中配置文件中的任何值。