首页 > 解决方案 > 关于 Nix 包管理的 Nix 表达式是什么?

问题描述

即使在阅读了 Nix 手册之后,仍然会混淆 Nix 表达式的真正含义。有时它们被称为派生,但存储派生也有其他含义。

标签: nix

解决方案


在 Nix 中,Nix 表达式只是您可以用 Nix 语言编写的任何类型值的通用术语。Nix 表达式可以是集合、列表、数字、字符串、函数、名称、算术运算、函数调用等等。

Nix 表达式可以包含其他 Nix 表达式:例如,1 + 2表达式内部包含两个表达式:12.

人们通常喜欢编写复杂的 Nix 表达式来表示如何构建一个软件。这些表达式实际上只是带有一些特殊属性的集合。Nix 软件可以评估这样的表达式并将其转换为.drv文件(一种描述如何构建软件的非常简单、紧凑的方式),然后可以构建该文件。

您可以使用不涉及派生或构建软件的 Nix 语言和 Nix 表达式做很多事情。该nix eval命令允许您评估 Nix 表达式。运行nix eval --help以查看其帮助屏幕,或运行这些命令来评估一些简单的表达式:

nix eval '(1 + 2)'  # gives 3

nix eval '({ a = 1; b = 2; }.a)'  # gives 1

(出于某种原因,这个命令似乎要求在它评估的大多数 Nix 表达式周围加上括号,但这似乎是一个错误或奇怪的设计选择,并且括号并不是每个 Nix 表达式的重要组成部分。)


推荐阅读