在 zsh 中如何列出所有环境变量?

Ali*_*Ali 40 shell zsh environment-variables

我想在 zsh 中获取所有环境变量(shell 变量?导出的变量?)及其在给定时间的值的列表。
这样做的正确方法是什么?

Chr*_*own 51

听起来你想要env

  • 这对我不起作用。“env”的输出中缺少“HOST”环境。在 zsh 上,我可以使用“set”列出所有内容。 (3认同)
  • @Chris `$HOST` 是一个在启动时实例化的 zsh 变量,默认情况下不导出。大多数变量都不是环境变量,除非您明确“导出”它们。请参阅 https://zsh.sourceforge.io/Doc/Release/Parameters.html#index-HOST (3认同)
  • @克里斯(好名字!)。`echo $HOST` 从哪里来?这是某种不是实际操作系统环境变量的 zsh 变量吗?出于我的目的,“$HOST”存在并且具有我想要的值,但它只出现在“set”而不是“env”中。 (2认同)

Gil*_*il' 33

export打印出环境变量及其值的列表。值被引用,输出export适合读回 shell。变量按字母顺序打印。

如果您还需要 shell 变量,请使用set. 如果你想与类型的注释(shell变量exportedinteger等),使用typeset

您也可以在其他 shell 上使用exportset,但大多数不引用输出,因此无法解析。typeset在 ksh 和 bash 上可用(具有不同的行为)。

如果你想要环境变量,还有env命令,它打印 unsorted, unquoted

如果您只需要名称,请访问parameters关联数组。键是参数名称,值表示类型。

  • 另请参阅 [`typeset -p +H -m '*'`](/a/117344) 以列出所有变量,包括隐藏变量。 (2认同)