Passa os valores das variáveis de ambiente para um programa? [duplicado]

0

Quando executo um script perl pdfannotextractor.pl no bash, quero definir o valor de uma variável TEXMFVAR necessária ao script e passá-lo ao script.

Eu pesquisei por aí e achei que encontrei uma solução:

$ TEXMFVAR=/usr/local/texlive/2014/texmf-var sudo /usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install

Mas parece que TEXMFVAR ainda está vazio no script, porque cria um diretório $TEXMFVAR sob meu diretório atual. Estou confuso.

$ ls \$TEXMFVAR/*
$TEXMFVAR/ls-R

$TEXMFVAR/scripts:
pax

Preciso de export da variável?

Este é um problema de uso de variáveis de ambiente?

Nota: Meu problema original é sobre texlive e aqui link

    
por Tim 08.05.2015 / 21:04

3 respostas

5

sudo higieniza o ambiente, portanto, variáveis potencialmente prejudiciais não são passadas para o processo em execução como o superusuário. Você pode alterar esse comportamento com o sinalizador -E ou --preserve-env para sudo.

    
por 08.05.2015 / 21:16
3

Com o sudo, você pode definir a variável para o comando no formulário var=value , tente:

sudo TEXMFVAR=/usr/local/texlive/2014/texmf-var \
/usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install
A opção

-E não funcionará com algumas variáveis como LD_LIBRARY_LOAD ou LD_PRELOAD por motivos de segurança.

    
por 08.05.2015 / 22:17
1

Se por algum motivo o sudo estiver rejeitando as variáveis de ambiente "diretamente" especificadas por cuonglm (talvez por motivos de política), você pode usar apenas env ... supondo que você tenha a política sudo para usá-lo.

sudo env TEXMFVAR=/usr/local/texlive/2014/texmf-var /usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install
    
por 08.05.2015 / 22:28