我已经尝试过提取环境变量在 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
。