Introdução do env - null

5

Eu tentei extrair as variáveis de ambiente em um processo Python com a ajuda de env --null , que funciona até mesmo para o ambiente variáveis contendo caracteres de nova linha.

Mas em algumas máquinas, recebi um erro:

> 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.

Em qual versão o argumento foi introduzido? Existe algum comando alternativo para extrair o ambiente?

    
por Peter 13.01.2015 / 15:43

2 respostas

6

A opção -0/--null foi introduzida pela primeira vez em 28-10-2009 e lançada com a versão 8.1 do GNU Coreutils.

Se o seu coreutils é muito antigo, você deve atualizar. Ou você pode usar perl :

perl -e '$ENV{_}="/usr/bin/env"; print "$_ => $ENV{$_}
cat /proc/self/environ
" for keys %ENV'

Como Stéphane Chazelas apontou em seu comentário, a abordagem acima não inclui strings de ambiente que não contenham = , variáveis de ambiente duplicadas ou variáveis de ambiente com nome nulo.

Se você está no Linux, você pode usar (Obrigado @ Stéphane Chazelas novamente):

perl -e '$ENV{_}="/usr/bin/env"; print "$_ => $ENV{$_}
cat /proc/self/environ
" for keys %ENV'
    
por 13.01.2015 / 17:33
3

Se você estiver trabalhando com o Python, pode usar:

import os
import sys

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

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

para obter resultados muito semelhantes em comparação com env --null .

    
por 13.01.2015 / 17:14