env --null 的介绍

env --null 的介绍

我已经尝试过提取环境变量在 Python 进程中借助env --null,它甚至适用于包含换行符的环境变量。

但在某些机器上我收到错误:

> env -0
env: invalid option -- '0'

> env --null
env: unrecognized option '--null'

> env --version
env (GNU coreutils) 6.12
Copyright (C) 2008 Free Software Foundation, Inc.

这个论点是在哪个版本中引入的?有没有其他命令来提取环境?

答案1

Option-0/--null于 2009 年 10 月 28 日首次引入,并随 GNU coreutils 版本 8.1 一起发布。

如果您的 coreutils 太旧,您应该升级。或者你可以使用perl

perl -e '$ENV{_}="/usr/bin/env"; print "$_ => $ENV{$_}\0" for keys %ENV'

正如 @Stéphane Chazelas 在他的评论中指出的那样,上述方法不包括不包含=、重复的环境变量或具有 null 名称的环境变量的环境字符串。

如果您使用的是 Linux,则可以使用(再次感谢@Stéphane Chazelas):

cat /proc/self/environ

答案2

如果你无论如何都在使用 python,你可以使用:

import os
import sys

for k in sorted(os.environ):
    if k == '_':
        v = '/usr/bin/env'
    else:
        v = os.environ[k]
    sys.stdout.write("{}={}\0".format(k, v))

与 相比得到非常相似的输出env --null

相关内容