/ proc / pid / environ missing variables

3

o google não está dando amor a este hoje, então eu me volto para os especialistas ...

Atualmente, estou hackeando um script que se baseia no recurso / proc / pid / environ no Linux (RHEL 4) para verificar uma determinada variável de ambiente. O problema é que parece que certas variáveis de ambiente não estão aparecendo por algum motivo.

Exemplo:

create some test vars:
$ export T_1=testval TEST_1=testval T=testval TESTING_LONGEST=testval

open a subshell:
$bash

$ cat /proc/self/environ|tr "
create some test vars:
$ export T_1=testval TEST_1=testval T=testval TESTING_LONGEST=testval

open a subshell:
$bash

$ cat /proc/self/environ|tr "%pre%" "\n"|grep testval
TESTVARIABLE_LONGEST=testval
T=testval
" "\n"|grep testval TESTVARIABLE_LONGEST=testval T=testval

hmm ... onde foram T_1 e TEST_1? que regras governam esse estranho universo?

Obrigado antecipadamente, Josh

ATUALIZAÇÃO:

Eu consegui reproduzir esse problema em várias versões do RHEL e com vários usuários, mas parece que ele é exclusivo do Bash (estou usando o 3.0). O ksh não mostra esse comportamento.

    
por Josh Arenberg 16.04.2010 / 18:22

3 respostas

1

Veja as variáveis de ambiente de uma corrida processo no Unix? ; ele observa que / proc / * / environ está limitado a 4096 bytes em alguns kernels, e que ele não exibe env vars que foram alterados naquele shell.

    
por 17.05.2010 / 15:20
0

Tente usar strings em vez de tr . É muito melhor encontrar strings legíveis do que apenas substituir NULs por newlines.

strings /proc/$$/environ
    
por 02.05.2010 / 19:54
0

Alguns arquivos em / proc não respondem bem a serem lidos em pequenos blocos. Tente algo assim:

dd if=/proc/self/environ bs=1024k | tr "
dd if=/proc/self/environ bs=1024k | tr "%pre%" "\n" | grep testval
" "\n" | grep testval
    
por 05.05.2010 / 03:23