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