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

时间:2012-06-18 05:12:31

标签: configuration environment-variables command-line-arguments configuration-files

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

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

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

2 个答案:

答案 0 :(得分:24)

我知道的标准是首先查找命令行参数,如果找不到环境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)

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

答案 1 :(得分:1)

AWS CLI与接受的答案一致:

  

选项的优先级:

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

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

  •