config ini env hcl plist terraform devops sysadmin file-extensions

常见配置文件格式参考指南:INI, ENV, PLIST, HCL 等详解

被各种配置文件搞晕了?这份指南涵盖了 .ini, .conf, .env, .properties, .plist, .hcl, .tf, .ovpn 和 .wg 文件后缀及其语法、使用场景。

2026-04-11

配置文件格式参考:INI、ENV、PLIST、HCL 等

在现代软件开发和系统管理中,我们会处理数十种不同的配置文件格式。虽然 JSON、YAML 和 TOML 是当前行业的首选,但在特定生态系统中,许多其他扩展名仍然存在,如 Linux 系统、Windows 注册表、Apple macOS、Java 和基础架构即代码 (IaC)。

本参考指南涵盖了您会遇到的最常见的“遗留”和专门的配置文件扩展名。


快速参考表:配置文件格式

扩展名 全称 生态系统 语法类型
.ini, .conf, .cfg 初始化 / 配置 (Initialization / Configuration) Linux, Windows, PHP, Python 键值对 / 分段
.env 环境变量 (Environment Variables) Web 开发 (Node.js, Docker, Python) Key=Value
.properties Java 属性 (Java Properties) Java, Spring, Android Key=Value (或 XML)
.plist 属性列表 (Property List) macOS, iOS, Apple XML 或 二进制
.hcl, .tf, .tfvars HashiCorp 配置语言 (HashiCorp Configuration Language) Terraform, Nomad, Consul 领域特定语言 (DSL)
.ovpn, .wg OpenVPN / WireGuard 配置 网络, VPN 基于指令

1. 系统与遗留配置 (.ini, .conf, .cfg)

这些是配置文件的“元老”。它们简单、基于文本且易于阅读。

  • INI 文件: 常用于 Windows 和较旧的软件。它们使用 [Sections] 来对键值对进行分组。
    [database]
    host = 127.0.0.1
    port = 5432
    
  • CONF / CFG: 主要用于 Linux 的 /etc/ 目录(例如 nginx.conf, redis.conf)。语法各异——有些使用简单的键值对,而另一些则使用大括号或自定义指令。

2. 环境变量 (.env)

.env 文件是现代 Web 开发中存储“秘密”和特定于环境的设置(如数据库 URL 或 API 密钥)的标准,这些设置不应提交到 Git。

  • 语法: 极其简单的 KEY=VALUE 格式。
  • 最佳实践: 永远不要将 .env 提交到版本控制系统。使用 .env.example 文件来显示所需的变量。

3. 企业与 Java (.properties)

Java 虚拟机 (JVM) 已使用数十年。它类似于 .env 文件,但支持更复杂的转义,甚至可以格式化为 XML。

  • 常见用途: Spring Boot 应用程序中的 application.properties
  • 语法: database.url=jdbc:mysql://localhost:3306/db

4. Apple 生态系统 (.plist)

属性列表 (Property List) 是 macOS 和 iOS 应用程序的标准。它们存储用户偏好和应用程序元数据(如 Info.plist)。

  • 格式: 它们可以存储为易于阅读的 XML 或经过优化的 二进制 文件。
  • 如何查看: 在 macOS 上使用“属性列表编辑器”,或使用 plutil 命令行工具将它们转换为 JSON。

5. 基础架构即代码 (.hcl, .tf, .tfvars)

HCL 由 HashiCorp 创建,旨在弥补易于阅读的 YAML 和机器可读的 JSON 之间的差距。它是 Terraform 的主要语言。

  • HCL: 表现力极强,支持注释、变量和函数。
  • TF: 专门用于 Terraform 资源定义。
  • TFVARS: 用于将变量值传递到 Terraform 计划中。

6. 网络与 VPN (.ovpn, .wg)

如果您曾经设置过安全连接,您一定见过这些:

  • OVPN: 一个复杂的类似脚本的文件,包含 OpenVPN 服务器地址、端口信息,以及通常嵌入的证书 (<ca>, <cert>, <key>)。
  • WG: 更简单的 WireGuard 配置。它使用整洁的 INI 风格格式来定义 [Interface][Peer]

处理配置文件的工具

  • 编辑器: VS Code、Sublime Text 和 JetBrains IDE 都有适用于上述几乎所有格式的插件,以提供语法高亮和验证。
  • 命令行转换器:
    • yq: 一个便携式的命令行 YAML、JSON、XML、CSV 和 TOML 处理器(类似于 jq)。
    • plutil: macOS 内置,用于转换 .plist 文件。
    • terraform fmt: 用于格式化 .tf.hcl 文件。

常见问题 (FAQ)

问:我可以在 .env 文件中使用注释吗?

答: 大多数 .env 解析器(如 Node.js 中的 dotenv)支持以 # 开头的注释。但是,最安全的方法是将注释放在单独的一行,而不是行内。

问:如何将二进制 .plist 转换为 XML?

答: 在 macOS 上,您可以运行:plutil -convert xml1 filename.plist

问:为什么我的 .ini 文件有 [方括号]?

答: 方括号表示 分段 (Section)。它们允许您将相关的设置分组在一起,防止名称冲突(例如,在 [http] 下有一个 port,在 [ssh] 下有另一个不同的 port)。

问:.hcl 与 JSON 兼容吗?

答: 是的!HCL 设计为与 JSON 完全兼容。如果您愿意,实际上可以用 .tf.json 编写您的 Terraform 文件(尽管这对人类来说可读性较差)。


Tool3M 上的相关工具

  • JSON 格式化工具: 格式化并验证您的 JSON 配置文件。
  • YAML 转 JSON 转换器: 了解常见数据格式之间的关系。